在Java中从字节/ Int创建字符串

Ton*_*ark 2 java types type-conversion

我想知道为什么以下代码不起作用:

String test = new String(new byte[] {92, 92, 92, 92, 92});
System.out.println(test);
String compare = "\\\\\\\\\\";
System.out.println(compare);
if (test == compare) {
System.out.println("Yes!");
}
Run Code Online (Sandbox Code Playgroud)

输出是:

\\\\\
\\\\\
Run Code Online (Sandbox Code Playgroud)

数据类型转换发生在哪里,我不理解?

编辑: /失败:(

Uri*_*Uri 9

字符串与.equals()进行比较,而不是与==进行比较

原因是使用引用(作为字符串变量),==只检查内存位置的相等性,而不是内容.

文字\\\存在于记忆中的一个地方.另一个是在你构建字符串的其他地方创建的.它们不在同一个位置,因此当你执行==时它们不会返回true

你应该做

if(test.equals(compare))
Run Code Online (Sandbox Code Playgroud)


Cal*_*lum 5

Java中的字符串是引用类型,==检查它们是否是相同的字符串,而不是相同的字符串.让我感到困惑.长话短说,你需要这样做:

if( test.equals( compare ) ) {

有关详细信息,请参阅此处:http://leepoint.net/notes-java/data/strings/12stringcomparison.html