qual è il valore predefinito di char?


89
char c = '\u0000';

Quando stampo c, mostra "a" nella finestra della riga di comando.

Allora qual è il valore predefinito di un campo di tipo char?

Qualcuno ha detto che "\ u0000" significa null in Unicode; è giusto?


puoi verificare se il tuo carattere ha il valore predefinito:char == 0
ACV

Risposte:


105

Il valore predefinito di un charattributo è infatti '\u0000'(il carattere null) come dichiarato nella specifica del linguaggio Java, sezione §4.12.5 Valori iniziali delle variabili .

Nel mio sistema, la linea System.out.println('\u0000');stampa un quadratino, il che significa che non è un carattere stampabile, come previsto.


26
È importante notare che '\u0000'non è lo stesso valore di null
Edd

Che cos'è null character? Alcune risposte a queste domande fanno riferimento al valore predefinito come carattere nullo.
Quazi Irfan

3
@ Óscar López, E il carattere "\ 0"? non sono la stessa cosa?
Tarik

5
@Tarik sì, sono la stessa cosa.
Óscar López

3
@iamcreasy quello che dici è corretto. La mia nota è solo che "carattere nullo" è un carattere. Non è nullin termini Java, vale a dire \u0000 == nullritornerebbefalse
Edd

30

"\ u0000" è il valore predefinito per un carattere. Il suo equivalente decimale è 0.

Quando dichiari una variabile char senza inizializzarla, "\ u0000" le verrà assegnato per impostazione predefinita.

vedere questo codice

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

Questo codice verrà stampato vero per l'ultima stampa.


9

Il valore predefinito di Character è Character.MIN_VALUE, rappresentato internamente comeMIN_VALUE = '\u0000'

Inoltre, puoi verificare se il campo del carattere contiene il valore predefinito come

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

}

7

'\u0000'sta per null. Quindi se stampi una variabile char non inizializzata, non otterrai nulla.


2
In realtà si otterrebbe un errore di compilazione;) "\ u0000" è il valore predefinito con cui viene "inizializzato" un campo char
Edd

1
Non otterrai niente. Otterrai uno spazio bianco o un quadrato.
Roshana Pitigala

Ho ottenuto uno "0" se inserisco c e c1 come "\ u0000" System.out.println (c + c1);
alan


0

Il carattere predefinito è il carattere con un valore int di 0 (zero).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';


0

è allettante diciamo come spazio bianco o intero 0 come da prova sotto

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

ma non lo direi perché, potrebbe differire in diverse piattaforme o in futuro. Quello che mi interessa davvero è che non userò mai questo valore predefinito, quindi prima di usare qualsiasi carattere controlla che sia \ u0000 o meno, quindi usalo per evitare idee sbagliate nei programmi. E 'così semplice.


0

Il valore predefinito di un tipo di dati char è "\ u0000" (o 0) e un valore massimo di "\ uffff" (o 65.535 inclusi).

Puoi vedere le informazioni qui .


2
La domanda ha già una risposta accettata più molte altre risposte. Affinché la tua risposta sia utile, dovrebbe aggiungere nuove informazioni utili o nuove intuizioni al problema. La semplice ripetizione delle informazioni in altre risposte non è utile.
AdrianHHH

0

Nota che c'è una netta differenza tra null e zero. In http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (a cui si fa riferimento sopra), viene fatta l'affermazione: -

C'è anche uno speciale valore letterale null che può essere usato come valore per qualsiasi tipo di riferimento. null può essere assegnato a qualsiasi variabile, ad eccezione delle variabili di tipo primitivo. C'è poco che puoi fare con un valore nullo oltre a testare la sua presenza. Pertanto, null viene spesso utilizzato nei programmi come indicatore per indicare che alcuni oggetti non sono disponibili.

Ecco perché le seguenti affermazioni ti daranno un errore e non l'altro: -

char a = null; // Tipo non corrispondente: impossibile convertire da null a char.

char b = 0; // Sintassi valida.


0

\u0000 è il valore predefinito per il tipo char in Java

Come altri menzionati, puoi usare il confronto per controllare il valore di una variabile non inizializzata.

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

-1

Penso che sia '\u00000'o semplicemente ''piuttosto che '\u0000' (Il primo ha 5 zeri mentre l'ultimo ha quattro zeri.)


@ JohannesH.- questa mi sembra una risposta. Contrassegnare questo come "non una risposta" non è corretto IMO.
Krease

-1

Il valore predefinito per charè \ u0000

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

Questo restituirà vero


-1

Il valore predefinito di char è null che è "\ u0000" come da grafico Unicode . Vediamo come funziona durante la stampa.

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

Nota: l'output è vuoto.


-2

Il valore predefinito di un tipo primitivo char è "\ u0000" (carattere null) come indicato nella specifica del linguaggio Java.

La scorciatoia per "u0000" è "\ 0", quindi il null può essere rappresentato da "u0000" o "\ 0".

Il seguente programma Java convalida le rappresentazioni nulle utilizzando il campo char di istanza "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);
    }

}

produzione:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.