Was ist der Standardwert von char?

87
char c = '\u0000';

Wenn ich c drucke, wird im Befehlszeilenfenster 'a' angezeigt.

Was ist der Standardwert eines Felds vom Typ char?

Jemand sagte, '\ u0000' bedeutet im Unicode null; ist das richtig?

user1298336
quelle
Sie können überprüfen, ob Ihr Zeichen den Standardwert hat, indem:char == 0
ACV

Antworten:

103

Der Standardwert eines charAttributs ist in der Tat '\u0000'(das Nullzeichen), wie in der Java-Sprachspezifikation, Abschnitt §4.12.5 Anfangswerte von Variablen angegeben .

In meinem System wird die Linie System.out.println('\u0000');ein kleines Quadrat gedruckt, was bedeutet, dass es sich nicht um ein druckbares Zeichen handelt - wie erwartet.

Óscar López
quelle
24
Es ist wichtig zu beachten, dass dies '\u0000'nicht der gleiche Wert ist wie null
Edd
Was ist null character? Einige Antworten auf diese Fragen beziehen sich auf den Standardwert als Nullzeichen.
Quazi Irfan
3
@ Óscar López, was ist mit dem Zeichen '\ 0'? Sie sind nicht gleich ?
Tarik
5
@ Tarik ja, sie sind die gleichen.
Óscar López
2
@iamcreasy was du sagst ist richtig. Mein Hinweis ist nur, dass 'Nullzeichen' ein Zeichen ist. Es ist nicht nullin Java ausgedrückt, dh \u0000 == nullwürde zurückkehrenfalse
Edd
29

'\ u0000' ist der Standardwert für ein Zeichen. Das Dezimaläquivalent ist 0.

Wenn Sie eine char-Variable deklarieren, ohne sie zu initialisieren, wird ihr standardmäßig '\ u0000' zugewiesen.

siehe diesen Code

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

Dieser Code wird beim letzten Druck als wahr ausgegeben.

Chandra Sekhar
quelle
8

Der Standardwert von Character ist Character.MIN_VALUE, der intern als dargestellt wirdMIN_VALUE = '\u0000'

Außerdem können Sie überprüfen, ob das Zeichenfeld den Standardwert als enthält

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

}
Yogesh Manware
quelle
7

'\u0000'steht für null. Wenn Sie also eine nicht initialisierte Zeichenvariable drucken, erhalten Sie nichts.

Roshan
quelle
2
Eigentlich würde man einen Kompilierungsfehler bekommen;) '\ u0000' ist der Standardwert, mit dem ein Zeichenfeld 'initialisiert' wird
Edd
1
Du wirst nichts bekommen. Sie erhalten einen Leerraum oder ein Quadrat.
Roshana Pitigala
Ich habe eine "0" erhalten, wenn ich sowohl c als auch c1 als '\ u0000' System.out.println (c + c1) eingefügt habe.
Alan
0

Das Standardzeichen ist das Zeichen mit dem int-Wert 0 (Null).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';

Der Koordinator
quelle
0

sein verlockendes Sprichwort als Leerzeichen oder Ganzzahl 0 gemäß dem folgenden Beweis

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

aber ich würde es nicht sagen, weil es sich von verschiedenen Plattformen oder in Zukunft unterscheiden könnte. Was mich wirklich interessiert, ist, dass ich diesen Standardwert niemals verwenden werde. Bevor Sie also ein Zeichen verwenden, überprüfen Sie einfach, ob es \ u0000 ist oder nicht, und verwenden Sie es dann, um Missverständnisse in Programmen zu vermeiden. So einfach ist das.

Mateen
quelle
0

Der Standardwert eines char-Datentyps ist '\ u0000' (oder 0) und ein Maximalwert von '\ uffff' (oder 65.535 einschließlich).

Sie können die Informationen hier sehen .

Luis Parada
quelle
2
Die Frage hat bereits eine akzeptierte Antwort sowie mehrere andere Antworten. Damit Ihre Antwort nützlich ist, sollte sie dem Problem nützliche neue Informationen oder neue Erkenntnisse hinzufügen. Nur Informationen in anderen Antworten zu wiederholen, ist nicht hilfreich.
AdrianHHH
0

Beachten Sie, dass es einen deutlichen Unterschied zwischen Null und Null gibt. In http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (siehe oben) wird folgende Aussage getroffen:

Es gibt auch ein spezielles Null-Literal, das als Wert für jeden Referenztyp verwendet werden kann. null kann jeder Variablen zugewiesen werden, mit Ausnahme von Variablen primitiver Typen. Es gibt wenig, was Sie mit einem Nullwert tun können, außer auf seine Anwesenheit zu testen. Daher wird in Programmen häufig null als Markierung verwendet, um anzuzeigen, dass ein Objekt nicht verfügbar ist.

Aus diesem Grund geben die folgenden Aussagen einen Fehler aus und nicht den anderen: -

char a = null; // Typkonflikt: Konvertiert nicht von null nach char.

char b = 0; // Gültige Syntax.

Choo
quelle
0

\u0000 ist der Standardwert für den Zeichentyp in Java

Wie bereits erwähnt, können Sie den Vergleich verwenden, um den Wert einer nicht initialisierten Variablen zu überprüfen.

char ch;
if(ch==0)
    System.out.println("Default value is the null character");
Anish Sharma
quelle
-1

Ich denke es ist '\u00000'oder nur ''eher als '\u0000' (Die erste hat 5 Nullen, während die letzte vier Nullen hat.)

Bcom
quelle
@ JohannesH.- das sieht für mich nach einer Antwort aus. Dies als "keine Antwort" zu kennzeichnen, ist IMO nicht korrekt.
Krease
-1

Der Standardwert für charist \ u0000

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

Dies wird true zurückgeben

Shubham Malhotra
quelle
-1

Der Standardwert von char ist null, was laut Unicode-Diagramm '\ u0000' ist . Lassen Sie uns sehen, wie es beim Ausdrucken funktioniert.

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

Hinweis: Die Ausgabe ist leer.

lft93ryt
quelle
-2

Der Standardwert eines primitiven Zeichentyps ist '\ u0000' (Nullzeichen), wie in der Java-Sprachspezifikation angegeben.

Die Verknüpfung für 'u0000' lautet '\ 0'. Die Null kann also entweder durch 'u0000' oder '\ 0' dargestellt werden.

Das folgende Java-Programm überprüft Nulldarstellungen mithilfe des Instanzzeichenfelds '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);
    }

}

Ausgabe:

javapedia.net
quelle