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