Java:将整数转换为字符串。与==等于运算符比较
在执行上述代码时,我得到的输出为falseJava:将整数转换为字符串。与==等于运算符比较,java,string,Java,String,在执行上述代码时,我得到的输出为false 你能解释一下Jvm是如何处理这个对象的吗?你必须用equals方法比较对象 public static void main(String[] args) { Integer i = new Integer(4); System.out.println(i.toString()); if (i.toString() == i.toString()) { System.out.println("true how");
你能解释一下Jvm是如何处理这个对象的吗?你必须用equals方法比较对象
public static void main(String[] args) {
Integer i = new Integer(4);
System.out.println(i.toString());
if (i.toString() == i.toString()) {
System.out.println("true how");
} else {
System.out.println("false how");
}
}
toString每次都会创建一个新的string对象,而您的代码实际上是在检查两个引用是否相同,但情况并非如此,因此它会运行else情况。如果你尝试
i.toString().equals(i.toString())
您将获得所需的输出。因为==运算符测试对象标识是否不相等。Integer.toString在多次调用时不需要返回相同的对象。@5gon12eder谢谢。。因此Integer.toString每次都会创建新对象。在执行if i.toString==i.toString此行时,总共创建了两个对象。我的理解是对的?提前感谢。它可能会也可能不会创建新对象。正如您测试上述代码一样,它似乎创建了两个不同的对象。你不能依赖它。
i.toString().equals(i.toString())