rai*_*pak 0 java string equals
语境:
使用等于双引号和单引号的字符串比较
我尝试检查我的一个业务对象的字段"parentId"(String)的值,如下所示:
System.out.println("Status 1 = "+myBusObj.getParentId().equals("0"));
System.out.println("Status 2 = "+myBusObj.getParentId().equals('0'));
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
Status 1 = true //where parentId was of value 0 (String)
Status 2 = false //where parentId was of value 0 (String)
Run Code Online (Sandbox Code Playgroud)
问题:为什么Status 1 is true但是Status 2 is false?
不同之处在于,在第一种情况下,您要与一个字符进行比较String,在第二种情况下,您要与一个Character对象进行比较.
字符串和字符使用不具有可比性equals(Object); 因此false在第二种情况下.
(这里有一点点微妙......因为这'0'是一个char自动编码的文字,为你提供了Character对象.在Java 5之前,语言中添加了自动装箱,.equals('0')调用将是编译错误.这是其中之一自动装箱实际上是阻碍的例子...)