上下文:
使用带双引号和单引号的等号进行字符串比较
我尝试检查字段的值" 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 true
但Status 2 is false
?
答案 0 :(得分:5)
不同之处在于,在第一种情况下,您要与一个字符String
进行比较,而在第二种情况下,您要与一个Character
对象进行比较。
字符串和字符使用equals(Object)
无法比较;因此在第二种情况下为false
。
(这里有一点点微妙......因为'0'
是char
文字正在自动装箱以提供Character
对象。在Java 5之前,在语言中添加了自动装箱,.equals('0')
调用将是一个编译错误。这是自动装箱实际上是一种阻碍的例子之一......)
答案 1 :(得分:1)
状态1:您尝试将字符串对象与字符串对象(“String”字符串对象)进行比较,因此结果为true。
状态2:您尝试将字符串对象与字符对象('字符'字符对象)进行比较,以便结果为false。
感谢。
答案 2 :(得分:0)
双引号括起来字符串和单引号括起Chars。