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

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

Ste*_*n C 5

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

字符串和字符使用不具有可比性equals(Object); 因此false在第二种情况下.


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