Object類、常用API作業題

練習一、簡述String類中的equals方法與Object類中的equals方法的不同點。

答:String類中的equals方法是用來判斷兩個對象的內容是否相同,而Object 類中的equals方法是用來判斷兩個對象是否是同一個對象,所謂同一個對象指的是內存中的同一塊存儲空間。(可以重寫equals方法,比較對象的屬性)

 

練習二、不運行代碼,直接說出打印結果,並解釋原因。

public class ToStringTest{
    static int i = 1;
    public static void main(String args[]){
        System.out.println("love " + new ToStringTest());//love java
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("me " + a.i);//me 2
    }
    public String toString(){
        System.out.print("I ");//I
        return "java ";
    }
}

運行結果:I love java    me 2

(爲什麼會 先輸出  I ?)

原因:當執行代碼的時候,首先加載靜態變量,然後執行main方法,由於main方法內部第一行代碼爲輸出語句,裏面new了此類對象,當執行此行代碼時會先創建了本類的對象,由於此類重寫了toString方法,會先執行toString方法的打印輸出,然後返回“java ”,再執行main方法第一行打印輸出。在Java中“System.out.println(類對象名);”實際輸出的是該對象的toString()方法返回的字符串,即括號中的內容等價於類對象名.toString(),toString方法的好處是在碰到println方法的時候會被自動調用,不用顯示的寫出來。

練習三、Object類equals方法

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);     	//true
System.out.println(s1.equals(s2)); 	//true

原因:String   用引號直接賦值的 創建的對象在 方法常量池, 創建s2 現在常量池中查找是否有                                            /  ”abc” 所以 s1 s2是同一個地址 。 == 判斷的是地址, .equals判斷的是值。

練習四、簡述StringBuilder類與String類的區別。

答:String類的對象內容不可改變,所以每當進行字符串拼接時,總是會在內存中創建一個新的對象,所以經常改變內容的字符串最好不要用String,因爲每次生成對象都會對系統性能產生影響。

StringBuilder又稱爲可變字符序列,是JDK5.0中新增加的一個類,它是一個類似於String的字符串緩衝區,通過某些方法調用可以改變該序列的長度和內容。即它是一個容器,容器中可以裝很多字符串,並且能夠對其中的字符串進行各種操作。它的內部擁有一個數組用來存放字符串內容,進行字符串拼接時,直接在數組中加入新內容,StringBuilder會自動維護數組的擴容。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章