繁体   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