从Java中的字节/ Ints创建字符串

时间:2009-08-27 16:54:11

标签: 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!");
}

输出结果为:

\\\\\
\\\\\

我不理解的数据类型转换在哪里?

修改: /失败:(

4 个答案:

答案 0 :(得分:9)

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

进行比较

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

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

时它们不会返回true

你应该做

if(test.equals(compare))

答案 1 :(得分:5)

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

if( test.equals( compare ) ) {

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

答案 2 :(得分:3)

您正在测试它们是否是同一个对象,而不是它们是否是相同的字符串。

然而,以下测试将成立:

test.intern() == compare.intern()

答案 3 :(得分:2)

您正在使用身份比较,而不是字符串比较。

试试test.equals(compare)。然后尝试test.intern() == compare。两者都应该有效。 intern方法是在String个对象上执行对象标识比较的唯一可靠方法。

相关问题