2012-11-27 11 views
8

nel mio progetto, Da qualche parte devo usare se n condizione di altro per controllare le variabili nulliciò che è la differenza tra nullo e "null" di String.valueOf (String Object)

String stringValue = null; 
String valueOf = String.valueOf(stringValue); 

ma quando controllo la condizione come

if (valueOf == null) { 
     System.out.println("in if"); 
    } else { 
     System.out.println("in else"); 
    } 

poi uscita è "in altro", perché questo sta accadendo?

+0

Il riferimento null è diverso dalla stringa "null". http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#valueOf(java.lang.Object) – kosa

+0

un debugger avrebbe aiutato? – Scorpion

+0

netbeans non ha il debugger per la manipolazione java-string –

risposta

14

Ecco il codice sorgente di di String.valueOf: -

public static String valueOf(Object obj) { 
    return (obj == null) ? "null" : obj.toString(); 
} 

Come si può vedere, per un valore null restituisce "null" stringa.

Quindi,

String stringValue = null; 
String valueOf = String.valueOf(stringValue); 

"null" stringa al valueOf.

Allo stesso modo, se si fa: -

System.out.println(null + "Rohit"); 

Si otterrà: -

"nullRohit" 

EDIT

Un altro esempio:

Integer nulInteger = null; 
String valueOf = String.valueOf(nulInteger) // "null" 

Ma in questo caso.

Integer integer = 10; 
String valueOf = String.valueOf(integer) // "10" 
+0

grazie, ma quando si confrontano sia null che "null", allora perché entrambi non sono uguali. –

+4

@arvin_codeHunk, 'null' è un oggetto vuoto, mentre' "null" 'è una stringa reale contenente i caratteri 'n', 'u', 'l' e 'l'. –

+0

La stringa qui è scritta come null che ti dice che hai appena preso il valore di stringa di null che è uguale a "" null "'. Quindi un 'nullo' non sarà uguale a' "nullo" 'letterale. –

2

In realtà, è possibile dare un'occhiata all'implementazione del metodo: valueOf(). Saprai cosa è successo allora.

In JDK 1.5, il suo codice è simile a questo:

public static String valueOf(Object obj) { 
return (obj == null) ? "null" : obj.toString(); 
} 

Dal codice, si può vedere che se l'oggetto è nullo che restituirà una stringa non nullo con valore "nullo" in esso, che significa che l'oggetto valueOf non è null.

Problemi correlati