jaka jest domyślna wartość char?

89
char c = '\u0000';

Kiedy drukuję c, w oknie wiersza poleceń wyświetla się „a”.

Jaka jest więc domyślna wartość pola typu char?

Ktoś powiedział „\ u0000” oznacza zero w Unicode; czy to prawda?

user1298336
źródło
możesz sprawdzić, czy Twój znak ma wartość domyślną:char == 0
ACV

Odpowiedzi:

105

Wartością domyślną charatrybutu jest rzeczywiście '\u0000'(znak null), jak określono w specyfikacji języka Java, sekcja §4.12.5 Początkowe wartości zmiennych .

W moim systemie linia System.out.println('\u0000');jest wyświetlana jako mały kwadrat, co oznacza, że ​​nie jest to znak drukowalny - zgodnie z oczekiwaniami.

Óscar López
źródło
26
Ważne jest, aby pamiętać, że '\u0000'nie jest to ta sama wartość, co null
Edd,
Co to jest null character? Niektóre odpowiedzi na te pytania odnoszą się do wartości domyślnej jako znaku null.
Quazi Irfan
3
@ Óscar López, A co z char '\ 0'? one nie są takie same ?
Tarik
5
@Tarik tak, są takie same.
Óscar López
3
@iamcreasy to, co mówisz, jest poprawne. Moja uwaga jest taka, że ​​„znak zerowy” to znak. To nie jest nullw kategoriach java tzn \u0000 == nullwrócifalse
Edd
30

„\ u0000” to domyślna wartość znaku. Jego odpowiednik dziesiętny to 0.

Gdy deklarujesz jakąś zmienną typu char bez jej inicjalizacji, domyślnie zostanie do niej przypisane '\ u0000'.

zobacz ten kod

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

Ten kod wyświetli prawdę dla ostatniego wydruku.

Chandra Sekhar
źródło
9

Wartość domyślna Character to Character.MIN_VALUE, która jest wewnętrznie reprezentowana jakoMIN_VALUE = '\u0000'

Dodatkowo możesz sprawdzić, czy pole znaku zawiera domyślną wartość jako

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

}
Yogesh Manware
źródło
7

'\u0000'oznacza null. Więc jeśli wydrukujesz niezainicjowaną zmienną char, nic nie otrzymasz.

roshan
źródło
2
Właściwie wystąpiłby błąd kompilacji;) `` \ u0000 '' to domyślna wartość, z którą pole znaku jest `` inicjalizowane ''
Edd
1
Nic nie dostaniesz. Otrzymasz białą przestrzeń lub kwadrat.
Roszana Pitigala
Otrzymałem „0”, jeśli wstawię zarówno c, jak i c1 jako „\ u0000” System.out.println (c + c1);
alan
0

Domyślny znak to znak o wartości int równej 0 (zero).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';

Koordynator
źródło
0

jego kuszące powiedzenie jako biała spacja lub liczba całkowita 0, jak na poniższy dowód

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

ale nie powiedziałbym tego, ponieważ może to różnić się na różnych platformach lub w przyszłości. Najbardziej zależy mi na tym, że nigdy nie użyję tej wartości domyślnej, więc przed użyciem jakiegokolwiek znaku po prostu sprawdź, czy jest to \ u0000 lub nie, a następnie użyj go, aby uniknąć nieporozumień w programach. To takie proste.

Mateen
źródło
0

Domyślna wartość typu danych char to „\ u0000” (lub 0), a maksymalna wartość „\ uffff” (lub 65 535 włącznie).

Możesz zobaczyć informacje tutaj .

Luis Parada
źródło
2
Pytanie ma już zaakceptowaną odpowiedź oraz kilka innych odpowiedzi. Aby Twoja odpowiedź była użyteczna, powinna zawierać nowe przydatne informacje lub nowe spojrzenie na problem. Samo powtórzenie informacji w innych odpowiedziach nie jest pomocne.
AdrianHHH
0

Zauważ, że istnieje wyraźna różnica między wartością null a zerem. W http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (przywołanym powyżej), stwierdza się: -

Istnieje również specjalny literał null, którego można użyć jako wartości dla dowolnego typu odwołania. null można przypisać do dowolnej zmiennej, z wyjątkiem zmiennych typu pierwotnego. Niewiele można zrobić z wartością zerową poza testowaniem jej obecności. Dlatego wartość null jest często używana w programach jako znacznik wskazujący, że jakiś obiekt jest niedostępny.

Dlatego poniższe stwierdzenia dadzą ci błąd, a nie inne: -

char a = null; // Niezgodność typów: nie można przekonwertować wartości null na znak.

char b = 0; // Prawidłowa składnia.

Choo
źródło
0

\u0000 jest domyślną wartością typu char w Javie

Jak wspominali inni, możesz użyć porównania, aby sprawdzić wartość niezainicjowanej zmiennej.

char ch;
if(ch==0)
    System.out.println("Default value is the null character");
Anish Sharma
źródło
-1

Myślę, że tak '\u00000'lub ''raczej niż '\u0000' (pierwsza ma 5 zer, a ostatnia cztery zera).

Bcom
źródło
@ JohannesH.- to wygląda na odpowiedź dla mnie. Oznaczanie tego jako „brak odpowiedzi” nie jest poprawne IMO.
Krease
-1

Wartość domyślna charto \ u0000

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

To wróci prawda

Shubham Malhotra
źródło
-1

Domyślna wartość char to null, czyli „\ u0000” zgodnie z wykresem Unicode . Zobaczmy, jak to działa podczas drukowania.

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

Uwaga: dane wyjściowe są puste.

lft93ryt
źródło
-2

Domyślną wartością typu pierwotnego typu char jest „\ u0000” (znak pusty), jak określono w specyfikacji języka Java.

Skrótem dla „u0000” jest „\ 0”, więc wartość null może być reprezentowana przez „u0000” lub „\ 0”.

Poniższy program Java weryfikuje reprezentacje wartości null przy użyciu pola znaku instancji „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);
    }

}

wynik:

javapedia.net
źródło