какое значение по умолчанию для char?


89
char c = '\u0000';

Когда я печатаю c, в окне командной строки отображается «a».

Итак, каково значение по умолчанию для поля типа char?

Кто-то сказал, что "\ u0000" означает ноль в юникоде; это правильно?


вы можете проверить, имеет ли ваш char значение по умолчанию:char == 0
ACV,

Ответы:


105

Значением по умолчанию для charатрибута действительно является '\u0000'(нулевой символ), как указано в Спецификации языка Java, раздел §4.12.5 Начальные значения переменных .

В моей системе линия представляет System.out.println('\u0000');собой небольшой квадрат, что означает, что это не печатаемый символ - как и ожидалось.


26
Важно отметить, что '\u0000'это не то же самое значение, что null
Эдд

Что есть null character? Некоторые ответы на эти вопросы ссылаются на значение по умолчанию как на нулевой символ.
Quazi Irfan

3
@ Scar López, как насчет символа '\ 0'? Они не то же самое ?
Tarik

5
@Tarik Да, они такие же.
Оскар Лопес,

3
@iamcreasy то, что вы говорите, правильно. Замечу, что «нулевой символ» - это символ. Это не nullв терминах Java, т.е. \u0000 == nullвернетсяfalse
Эдд

30

'\ u0000' - значение по умолчанию для символа. Его десятичный эквивалент - 0.

Когда вы объявляете некоторую переменную типа char без ее инициализации, по умолчанию ей будет присвоено '\ u0000'.

увидеть этот код

public class Test {
    char c;

    public static void main(String args[]) throws Exception {
        Test t = new Test();
        char c1 = '\u0000';
        System.out.println(t.c);
        System.out.println(c1);
        System.out.println(t.c == c1);
    }
}

Этот код вернет истину для последней печати.


9

Значение по умолчанию для Character - Character.MIN_VALUE, которое внутренне представлено какMIN_VALUE = '\u0000'

Кроме того, вы можете проверить, содержит ли символьное поле значение по умолчанию как

Character DEFAULT_CHAR = new Character(Character.MIN_VALUE);
if (DEFAULT_CHAR.compareTo((Character) value) == 0)
{

}

7

'\u0000'означает null. Поэтому, если вы напечатаете неинициализированную переменную типа char, вы ничего не получите.


2
На самом деле вы получите ошибку компиляции;) '\ u0000' - это значение по умолчанию, которым 'инициализируется' поле char
Эдд

1
Вы ничего не получите. Вы получите пустое пространство или квадрат.
Рошана Питигала

Я получил «0», если поставил и c, и c1 как '\ u0000' System.out.println (c + c1);
alan


0

По умолчанию char - это символ со значением int 0 (ноль).

символ NULLCHAR = (символ) 0;

char NULLCHAR = '\ 0';


0

заманчиво сказать как пробел или целое число 0 в соответствии с приведенным ниже доказательством

char c1 = '\u0000';
System.out.println("*"+c1+"*");
System.out.println((int)c1);

но я бы так не сказал, потому что он может отличаться на разных платформах или в будущем. Что меня действительно волнует, так это то, что я никогда не буду использовать это значение по умолчанию, поэтому перед использованием любого символа просто проверьте, что он равен \ u0000 или нет, а затем используйте его, чтобы избежать неправильных представлений в программах. Это так просто.


0

Значение по умолчанию для типа данных char - '\ u0000' (или 0), а максимальное значение - '\ uffff' (или 65 535 включительно).

Вы можете увидеть информацию здесь .


2
На вопрос уже есть принятый ответ и несколько других ответов. Чтобы ваш ответ был полезным, он должен добавить новую полезную информацию или новое понимание проблемы. Просто повторение информации в других ответах бесполезно.
AdrianHHH

0

Обратите внимание, что существует явная разница между нулем и нулем. В http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (указанном выше) делается заявление: -

Также существует специальный нулевой литерал, который можно использовать как значение для любого ссылочного типа. null может быть присвоен любой переменной, кроме переменных примитивных типов. Вы мало что можете сделать с нулевым значением, кроме проверки его наличия. Поэтому значение null часто используется в программах в качестве маркера, чтобы указать, что какой-то объект недоступен.

Вот почему следующие утверждения дадут вам ошибку, а не другую:

char a = null; // Несоответствие типов: невозможно преобразовать значение null в char.

char b = 0; // Правильный синтаксис.


0

\u0000 значение по умолчанию для типа char в Java

Как уже упоминалось, вы можете использовать сравнение для проверки значения неинициализированной переменной.

char ch;
if(ch==0)
    System.out.println("Default value is the null character");

-1

Я думаю, что это так '\u00000'или ''скорее, чем '\u0000' (У 1-го 5 нулей, а у последнего 4 нуля.)


@ JohannesH. - мне кажется, это ответ. Пометить это как «не ответ» неверно, ИМО.
Krease 06

-1

Значение по умолчанию для charявляется \ u0000

public class DefaultValues {
char varChar;
public static void main(String...l)
 {
    DefaultValues ob =new DefaultValues();
    System.out.println(ob.varChar=='\u0000');
 }  
}

Это вернет истину


-1

Значение по умолчанию для char - null, что соответствует «\ u0000» согласно диаграмме Unicode . Давайте посмотрим, как это работает при печати.

public class Test_Class {   
     char c;
     void printAll() {  
       System.out.println("c = " + c);
    }   
    public static void main(String[] args) {    
    Test_Class f = new Test_Class();    
    f.printAll();   
    } }

Примечание: вывод пустой.


-2

Значение по умолчанию для примитивного типа char - '\ u0000' (нулевой символ), как указано в Спецификации языка Java.

Ярлык для 'u0000' - '\ 0', поэтому нуль может быть представлен как 'u0000' или '\ 0'.

Приведенная ниже программа Java проверяет нулевые представления, используя поле экземпляра char 'c'.

public class DefaultValueForchar {  
    char c;
    public static void main(String[] args) {
        char c0 = '\0';
        char cu0000 = '\u0000';
        DefaultValueForchar obj = new DefaultValueForchar();
        System.out.println(obj.c);
        System.out.println(c0);
        System.out.println(cu0000);
        System.out.println(c0==cu0000);
        System.out.println(obj.c==c0);
        System.out.println(obj.c==cu0000);
    }

}

выход:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.