【问题标题】:Why isn't Java's ArrayList <Integer> get() returning the correct comparison for ==? [duplicate]为什么 Java 的 ArrayList <Integer> get() 不返回正确的 == 比较? [复制]
【发布时间】:2021-04-29 19:31:15
【问题描述】:

我最近开始学习 Java 的 ArrayList 类,我写了一小段代码来测试其中的一些功能:

import java.io.*;
import java.util.*;

public class TestProgram {
    public static void main (String[] args){
        ArrayList <Integer> l = new ArrayList <Integer> ();
        l.add(255);
        l.add(255);

        System.out.println(l.get(0) == l.get(1));
    }
}

奇怪的是,这段代码的输出是false。我不知道为什么会这样(因为 255 = 255),所以有人可以指点我正确的方向吗?

【问题讨论】:

  • 因为你是在比较 Integer 对象而不是基元 int
  • 您不能安全地使用== 来比较字符串或整数等对象。这只适用于原语。必须改用equals
  • 这是一个关于 Java 的常见初学者错误。在l.get(0) 上,您实际上得到的不是255,而是Integer Object,当您进行== 比较时,您是在比较对象的指针,而不是值。要真正比较对象的值,您必须使用 Integer 对象的比较方法。

标签: java arraylist


【解决方案1】:

你可以这样使用:

System.out.println(l.get(0).equals(l.get(1)));

您是在比较对象,而不是原语。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 2015-09-15
    • 2015-05-29
    • 2012-04-12
    • 2015-06-29
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多