яке значення за замовчуванням char?


89
char c = '\u0000';

Коли я друкую c, у вікні командного рядка відображається "a".

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

Хтось сказав, що "\ u0000" означає нуль в Unicode; це так?


Ви можете перевірити, чи має ваш символ значення за замовчуванням, до:char == 0
ACV

Відповіді:


105

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

У моїй системі рядок System.out.println('\u0000');друкує трохи квадрата, це означає, що це не друкується символ - як очікувалося.


26
Важливо зазначити, що '\u0000'це не таке саме значення, як null
Едд,

Що це таке null character? Деякі відповіді на ці запитання стосуються значення за замовчуванням як нульовий символ.
Quazi Irfan

3
@ Оскар Лопес, а як щодо символу '\ 0'? вони не однакові?
Тарік

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

Значення символу за замовчуванням - символ.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);
Алан,



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 на 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' (Перший має 5 нулів, а останній має чотири нулі.)


@ JohannesH. - це для мене виглядає як відповідь. Позначення цього як "не відповідь" не є правильним IMO.
Krease

-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 є нуль, яке відповідно до діаграми Unicode становить '\ u0000' . Давайте подивимось, як це працює, друкуючи.

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 перевіряє нульові подання за допомогою поля символу екземпляра '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.