[英]Java String comparison
我的java代碼中有以下語句
System.out.println(cName+" "+pName+" "+cName.equals(pName));
輸出是
???????????????? ???????????????? false
equals應該返回true,因為兩個字符串具有相同數量的'?'。 但我變得虛假
這兩個String
在你的控制台上的“打印”形式可能是相同的,但它們的內容肯定不相同,這是由String.equals()
的返回值證明的。
它們很可能包含控制台無法顯示的字符,因此控制台顯示'?'
“不可顯示”字符的字符。
另一種可能性是它們包含在控制台上打印時沒有視覺外觀的字符。 這些字符可能是零字符( '\\0'
)和控制字符(其代碼小於32),但這取決於控制台的顯示方式和內容。
注意:即使您打開存儲或初始化這些String
的文件並且您看到相同的問號,您的編輯器仍然無法顯示字符,編輯器也會顯示問號( '?'
)對於不可顯示的字符或沒有視覺外觀的字符。
如何顯示差異?
迭代字符串的字符,並將它們打印為int
數字,您將看到差異:
String s = "Test";
for (int i = 0; i < s.length(); i++)
System.out.println((int) s.charAt(i));
現在如果你看到相同的數字打印出來,那么是的,你可以確定它們是相同的,但是String.equals()
會返回true
。
可能是因為空白,它會變得false
檢查一下:
System.out.println(cName+" "+pName+" "+(cName.trim()).equals(pName.trim()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.