选择题 8.  有以下代码:
    String s="hello";
    String t="hello";
    char c[]={'h','e','1','o'};
    下列选项中,返回值为false的语句是______。
【正确答案】 B
【答案解析】 在Java语言中,equals方法是类Object中的方法,因此,对于所有继承于Object的类中都会有该方法。在Object类中,equals方法的作用是比较两个对象的引用是否相等,即是否指向同一个对象。它等价于“==”操作,当这两个引用指向同一个对象的引用时,返回true,否则,返回false。而String类重写了equals方法,String类的equals方法用来判断两个引用指向的字符串的内容是否相等,如果相等,则返回true,否则,返回false。
   对于选项A,字符串s和字符串t的内容相同,都为“hello”,因此,返回值为true。所以,选项A错误。
   对于选项B,t是String的对象,而c是字符数组的引用。equals方法的参数为String类型,因此,会默认调用c的toString方法,这个方法会返回c对象的信息,而不是“hello”,故返回值为false。所以,选项B正确。
   对于选项C,t的内容与新创建出来的字符串的内容都是“hello”,因此,返回值为true。所以,选项C错误。
   对于选项D,对于String类的对象而言,判等符“==”通常用来表示两个字符串对象的引用是否相等。在执行语句String s=”hello”时,会首先在常量区里存储字符串“hello”,而s指向这个对象,在执行语句Stringt="hello"时,由于在常量区里已经存在这个字符串,因此,t也直接指向这个字符串,而不会创建新的字符串,所以,字符串s与字符串t的值相等。s==t的返回值为true,选项D错误。