2012-11-27 10 views
8

trong dự án của tôi, Một nơi nào đó tôi phải sử dụng nếu n điều kiện khác để kiểm tra các biến rỗngsự khác biệt giữa những gì là vô "null" của String.valueOf (String Object)

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

nhưng khi tôi kiểm tra điều kiện như

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

sau đó đầu ra là "trong khác", tại sao điều này đang xảy ra?

+0

tham chiếu null khác với chuỗi "null". http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#valueOf(java.lang.Object) – kosa

+0

một trình gỡ lỗi có thể đã giúp? – Scorpion

+0

netbeans không có trình gỡ rối cho java-string manupulation –

Trả lời

14

Dưới đây là mã nguồn của String.valueOf: -

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

Như bạn có thể thấy, với giá trị giao null nó trả "null" chuỗi.

Vì vậy,

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

cho "null" chuỗi các valueOf.

Tương tự, nếu bạn làm: -

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

Bạn sẽ nhận được: -

"nullRohit" 

EDIT

Một Ví dụ:

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

Nhưng trong trường hợp này.

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

cảm ơn nhưng khi chúng ta so sánh cả hai null và "null" thì tại sao cả hai đều không bằng nhau. –

+4

@arvin_codeHunk, 'null' là một đối tượng trống, trong khi' "null" 'là một chuỗi thực có chứa các ký tự 'n', 'u', 'l' và 'l'. –

+0

Chuỗi ở đây được viết là null cho bạn biết rằng bạn vừa lấy giá trị String của null bằng với '" null "'. Vì vậy, một 'null' sẽ không bằng' 'null" 'nghĩa đen. –

2

Thực ra, bạn có thể xem xét triển khai phương thức: valueOf(). Bạn sẽ biết những gì đã xảy ra sau đó.

Trong JDK 1.5, mã của nó là như thế này:

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

Từ mã này, bạn có thể thấy rằng nếu đối tượng là null nó sẽ trả về một chuỗi không null với giá trị "null" trong nó, mà có nghĩa là đối tượng valueOf không phải là null.