1. equals与==的区别
参考解答
- equals 是Object中的方法,而==是运算符
- ==用做基本类型比较,是比较值是否相等;用做引用类型比较,是比较两个引用是否指向同一个对象
- equals它的目的是比较两个对象的“内容”是否一致,Object的默认实现仍是比较两个对象的引用是否一致,但由程序员可以通过子类重写来实现自定义的比较规则
2. 以下二条语句返回值为 true 的有:
A:"beijing"=="beijing";
B:"beijing".equalsIgnoreCase(new String("beijing"));
参考解答
A 和 B 都为true
字符串的字面量会利用常量池缓存对象,只要字面量相同,它们都代表同一个字符串对象,因此A返回true
new String会导致创建新的字符串对象,与原来的"beijing"字母量是两个不同的字符串对象,但equalsIgnoreCase比较的是字符串内容在忽略大小写后是否相同,虽然对象是两个,它们的内容是一样的,因此B也返回true
3. 关于以下程序段,说法正确的是( )
String s1 = "abc"+"def"; //1
String s2 = new String(s1); //2
if(s1==s2) //3
System.out.println("==succeeded"); //4
if(s1.equals(s2)) //5
System.out.println(".equals() succeeded"); //6
A. 行4与行6都将执行
B. 行4执行,行6不执行
C. 行6执行,行4不执行
D. 行4,行6都不执行
参考解答
正确答案选:C new String 会创建新的String对象,从而导致s2与s1引用地址不同,它们分别引用不同的String对象,所以行4不执行。
String的equals方法比较的是内容是否相同,它们的内容都是abcdef,所以行6会执行