Given the code fragment:
public class App {
public static void main(String[] args) {
String str1 = "Java";
String str2 = new String("java");
//line n1
{
System.out.println("Equal");
} else {
System.out.println("Not Equal");
}
}
}
Which code fragment, when inserted at line n1, enables the App class to print Equal?
A.
String str3 = str2;
if (str1 == str3)
B.
if (str1.equalsIgnoreCase(str2))
C.
String str3 = str2;
if (str1.equals(str3))
D.
if (str1.toLowerCase() == str2.toLowerCase())
題解
Java的「==」運算子會判斷運算元的值是否相等,而非內容是否相等。在這裡若要輸出「Equal」,必須要讓if條件式成立。
選項A,str2和str3都是參考至相同的物件,但str1和str2是兩個不同的物件,所以它們的參考值是不一樣的,if條件式不會成立。
選項B,equalsIgnoreCase方法可以判斷字串在忽略字母大小寫的情況下是否相等。str1是「Java」,str2是「java」,因此if條件式成立。
選項C,str2和str3都是參考至相同的物件,equals可以判斷字串是否完全相等。str1是「Java」,str3是「java」,因此if條件式不成立。
選項D,toLowerCase方法會回傳將字串內的字母全都轉成小寫字母的結果。str1.toLowerCase()會回傳「java」,str2.toLowerCase()會回傳「java」,但雖然這兩字串都是「java」,它們實際上是不同的物件,因此有不同的參考,所以經過「==」運算後,結果將為false。