在AP CS A Exam中,關于對象(object)之間的比較,大家需要掌握三種比較方式。
我們先來看前兩種:即,object identity(==、!=) 和 object equality(equals)。
我們在比較兩個數值是否相等的時候,可以使用 == 和 !=,比如:
System.out.println( 1 != 2);
顯示結果為true。
但是,當我們在進行object之間的比較的時候,就不能簡單地使用 == 和 !=了。
比如:
String str1 = “SAT”;
String str2 = “小幫手”;
String str3 = “SAT小幫手”;
System.out.println((str1 + str2) == str3);
顯示結果為false。
為什么會這樣呢?原因在于,== 和 != 比較的是兩個引用型(reference type)變量內所存儲的引用(reference),而不是比較其所存儲的對象(object)。
當然,有的時候,如果你使用 == 和 != 來比較兩個對象,也會達到你想要的效果,但是在Java和AP CS A考試中,千萬別這么做!
那么,如果我們想要比較兩個object是不是一樣,我們應該怎么做呢?答案是調用一個方法,equals。
我們可以將前面的代碼修改如下:
String str1 = “SAT”;
String str2 = “小幫手”;
String str3 = “SAT小幫手”;
System.out.println((str1 + str2).equals(str3));
這樣顯示結果就是我們想要的true了。
不知道大家有沒有看過老藝術家趙本山先生和老藝術家宋丹丹女士表演的一個小品,里面有一句經典的臺詞——“脫了馬甲我也認識你!”這里的equals方法,比較的就是穿著不同馬甲的兩個objects,雖然馬甲不同,但“內核”一樣。
在AP CS A的考試中,equals會被用來比較兩個字符串是否一樣,當然,我們需要比較的不是它們的馬甲(reference),而是它們的“內核”。
第三種比較方式,是專門用于字符串(String)之間的比較的另外一個method:compareTo。
前面我們說到的equals也可以用來比較兩個字符串,它的返回值是true或false;但是compareTo的返回值不是boolean值,而是一個int型數值,即返回一個整數。
如果調用compareTo之后的返回值是0,則代表這兩個字符串完全一樣,比如:
String str = “SAT小幫手”;
System.out.println(str.compareTo(“SAT小幫手”));
顯示結果就是0。
如果調用compareTo之后的顯示結果不為0,那就代表這兩個字符串不完全一樣。
比如:
System.out.println(“A”.compareTo(“B”));
顯示結果就是-1,因為compareTo比較的是兩個字符串的每個字符在UNICODE中對應的數字,“A”在“B”的前面一個,所以返回值就是-1。
如果調用System.out.println(“B”.compareTo(“A”)); 結果就是1了。
因為大小寫在UNICODE中的編碼也不一樣,所以compareTo是區分大小寫的(case-sensitive)。
最后,大家可以考慮一下以下代碼的顯示值應該是哪個整數:
System.out.println(“SIT”.compareTo(“SAT”));
如果有任何問題,歡迎來找小起子聊天。
AP Computer Science A 考前刷題精講班:
上課時間:2018年4月14日(周六)、15日(周日)、21日(周六)、22日(周日)
09:00-11:00
上課方式:網絡直播課,可回看
課時:每次2小時,總計8小時
費用:2400元(參加過AP CS A 課程的老學員8折優惠)
適合學員:有AP CS A課程基礎,準備2018年5月份參加AP考試的同學。
講題范圍:2013年至2017年一共5年的Free Response Questions,共計18道大題。
增值服務:給所有報名學員提供兩套小幫手原創AP CS A模考選擇題,并提供答疑服務。

? 2025. All Rights Reserved. 滬ICP備2023009024號-1