首页 > 试题广场 >

下面 Java 代码的运行结果为() public stat

[单选题]
下面 Java 代码的运行结果为()
public static void main(String[] args) {
    List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(1, 2, 3);
    System.out.println(list1 == list2);
    System.out.println(list1.equals(list2));
}
  • false true
  • true false
  • true true
  • false false
List<integer> list1 = Arrays.asList(1, 2, 3);  和  List<integer> list2 = Arrays.asList(1, 2, 3);  分别创建了两个包含  1 、 2 、 3  的  List  集合。虽然它们的元素相同,但它们是两个不同的对象实例。  System.out.println(list1 == list2);  使用  ==  比较  list1  和  list2  。在Java中, ==  比较的是对象的引用地址。由于  list1  和  list2  是两个不同的对象实例,所以它们的引用地址不同,这行代码输出  false 。  System.out.println(list1.equals(list2));  使用  equals  方法比较  list1  和  list2  。在Java中, List  接口的  equals  方法被实现为比较两个列表的元素是否相等(顺序和内容都相同)。这里  list1  和  list2  元素顺序和内容都一样,所以这行代码输出  true 。</integer></integer>
发表于 2025-02-03 09:26:59 回复(0)
List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(1, 2, 3);
这两个分别创建了两个实例对象 在堆内存中的地址是不一样的 

==比较的是地址 返回false
因为list重写了equals方法 所以进行比较list1 list2 时比较的是内容 所以返回true

源码:List接口重写了equals方法
编辑于 2025-05-07 19:39:38 回复(0)
==比较的是地址,equal比较的是内容
发表于 2025-05-18 08:07:29 回复(0)