какое значение по умолчанию для 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.