簡體   English   中英

Java字符串比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM