Java:将整数转换为字符串。与==等于运算符比较

Java:将整数转换为字符串。与==等于运算符比较,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");

在执行上述代码时,我得到的输出为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");
    } 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())