2012-03-28 3 views
64
char c = '\u0000'; 

Когда я печатаю c, он показывает «a» в окне командной строки.Каково значение по умолчанию char?

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

Кто-то сказал, что '\ u0000' означает null в unicode; это правильно?

+0

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

ответ

78

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

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

+9

Важно отметить, что' '\ u0000'' - это не то же значение, что и' null' – Edd

+0

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

+1

@ Óscar López, Что относительно символа '\ 0'? Они не одинаковы ? – Tarik

20

'\ 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); 
    } 
} 

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

7

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

+2

Фактически вы получите ошибку компиляции;) '\ u0000' - это значение по умолчанию, которое поле char инициализируется с помощью – Edd

0

Знак по умолчанию - символ с значением int 0 (ноль).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';

0

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

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

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

1

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

Вы можете посмотреть информацию here.

+1

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

5

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

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

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

} 
0

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

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

Поэтому следующие инструкции выдаст сообщение об ошибке, а не другой: -

обугленного а = NULL; // Тип несоответствия: невозможно преобразовать из null в char.

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

0

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

+0

@ JohannesH.- это похоже на ответ. Отметить это как «не ответ» неверно ИМО. – Krease

1

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

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

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

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

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

Это вернет истинный

0

Значение по умолчанию полукокса является нулем, который является '\ u0000' согласно Unicode chart. Посмотрим, как это работает при распечатке.

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(); 
    } } 

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

Смежные вопросы