文章目录
- 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