> 文章列表 > day29—选择题

day29—选择题

day29—选择题

文章目录

    • 1.HashSet子类依靠什么方法区分重复元素(C)
    • 2.以下代码在编译和运行过程中会出现什么情况(A)
    • 3.有这么一段程序,执行的结果是(C)

1.HashSet子类依靠什么方法区分重复元素(C)

A toString(),equals()
B clone(),equals()
C hashCode(),equals()
D getClass(),clone()

思路:先调用对象的HashCode方法将对象映射为数组下标,再通过equals方法判断元素内容是否相同;toString是打印元素内容,clone是拷贝;getclass是获取对象的类对象

2.以下代码在编译和运行过程中会出现什么情况(A)

public class TestDemo{private int count;public static void main(String[] args) {TestDemo test=new TestDemo(88);System.out.println(test.count);}TestDemo(int a) {count=a;}
}

A 编译运行通过,输出结果是88
B 编译时错误,count变量定义的是私有变量
C 编译时错误,System.out.println方法被调用时test没有被初始化
D 编译和执行时没有输出结果

思路:被private修饰的对象只能在方法的内部使用;count是成员变量,通过对象访问

3.有这么一段程序,执行的结果是(C)

public class Test{public String name="abc";public static void main(String[] args){Test test=new Test();Test testB=new Test();System.out.println(test.equals(testB)+","+test.name.equals(testB.name));}
}

A true,true
B true,false
C false,true
D false,false

思路:由于test没有重写equals方法,所以test.equals(testB)比较的时候会调用object的equals方法,比较的是两个对象的地址是否相同,所以是false;而对于test.name.equals(testB.name)),字符串默认是重写了equals方法,比较的是两个对象的值是否相同,所以是true