【发布时间】: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,而是IntegerObject,当您进行==比较时,您是在比较对象的指针,而不是值。要真正比较对象的值,您必须使用Integer对象的比较方法。