(此系列试题来源于Java面试宝典书籍)
一、问答题
1. 下面的运行结果是?为什么
String str1 = “hello”;
String str2 = “he”+new String(“llo”);
String str3 = “he”+”llo”;
System.err.println(str1== str2);
System.err.println(str1 == str3);
// result:false true
解析:
- == :如果没有new一个实例的话,比较的就是值,如果new了一个实例(对象),比较的是地址
- 栈中的常量池,如果存在一些常量,先去常量池里找,如果没有,再new
2. HashSet里的元素是不能重复的,那用什么办法区分重复与否
-
当往集合里添加元素时,调用 add(Object)方法时候,首先会调用 Object 的 hashCode()方法判hashCode 是否已经存在,如不存在则直接插入元素
-
如果已存在则调用 Object 对象的 equals()方法判断是否返回 true,如果为 true 则说明元素已经存在,如为 false 则插入元素
3. Lis