上下文:
使用相等于双引号和单引号的字符串比较
我尝试检查我的一个业务对象的字段"parentId“(String)的值,如下所示:
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
发布于 2014-08-16 05:33:44
区别在于,在第一种情况下,您比较的是一个字符String,而在第二种情况下,您比较的是一个Character对象。
字符串和字符在使用equals(Object)时是不可比较的;因此在第二种情况下是false。
(这里有点微妙.在这个'0'中,是一个char文本,它被自动装箱,为您提供Character对象。在Java 5将自动装箱添加到语言之前,.equals('0')调用将是编译错误。这是一个例子,其中自动装箱实际上是一个障碍.)
发布于 2014-08-16 05:37:10
状态1:您尝试将string对象与string对象(“String”String对象)进行比较,这样结果将为true。
状态2:尝试将字符串对象与字符对象(“字符”字符对象)进行比较,结果将为假。
谢谢。
发布于 2014-08-17 11:33:04
双引号包括字符串和单引号,包含字符。
https://stackoverflow.com/questions/25337233
复制相似问题