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会执行


results matching ""

    No results matching ""