.equals(“0”)和.equals('0')之间的区别

时间:2014-08-16 05:30:53

标签: java string equals

上下文:

使用带双引号和单引号的等号进行字符串比较

我尝试检查字段的值" parentId" (字符串)我的一个业务对象如下:

System.out.println("Status 1 = "+myBusObj.getParentId().equals("0"));


System.out.println("Status 2 = "+myBusObj.getParentId().equals('0'));

我得到以下输出:

Status 1 = true //where parentId was of value 0 (String)

Status 2 = false //where parentId was of value 0 (String)

问题: 为什么Status 1 is trueStatus 2 is false

3 个答案:

答案 0 :(得分:5)

不同之处在于,在第一种情况下,您要与一个字符String进行比较,而在第二种情况下,您要与一个Character对象进行比较。

字符串和字符使用equals(Object)无法比较;因此在第二种情况下为false


(这里有一点点微妙......因为'0'char文字正在自动装箱以提供Character对象。在Java 5之前,在语言中添加了自动装箱,.equals('0')调用将是一个编译错误。这是自动装箱实际上是一种阻碍的例子之一......)

答案 1 :(得分:1)

状态1:您尝试将字符串对象与字符串对象(“String”字符串对象)进行比较,因此结果为true。

状态2:您尝试将字符串对象与字符对象('字符'字符对象)进行比较,以便结果为false。

感谢。

答案 2 :(得分:0)

双引号括起来字符串和单引号括起Chars。