android複習路之java基礎上

八種基本的數據類型,及其封裝類:

八種基本的數據類型:int,double,long,float,short,character,boolean

對應的封裝類型是:Integer,Double,Long,Float,Short,Character,Boolean

equals和==的區別:

1.==

在基礎數據類型比較的時候==比較的是它們的值是否相同,如果是引用對象的時候==比較的就是它們在內存中的地址是否相同,也就是它們指向的同一個new出來的對象,此時它們==得到的結果是true否則都是false。

2.equals

equals是Object的一個方法,在該類中,也是僅僅實現了兩個對象比較內存地址是否相同,但子類一般都會重寫該方法。

3.==和equals的區別:

String在java虛擬中,java虛擬機會開闢一塊空間來存字符串,這部分區域被稱之爲字符串緩衝池。如果使用string=''abc''語句的時候,首先會在緩衝池中檢查是否存着在這變量,如果存在就返回這個變量的引用,如果不存在就新建一個變量並且返回引用給a。如果是用 string a =new string("abc");就算在java虛擬機中存在abc,java虛擬機仍然會產生一個新的string對象。

==在比較引用的情況下,會去比較兩個引用的內存地址是否相等。
    String str1 = "abc";
    String str2 = "abc";


    System.out.println(str1 == str2);
    System.out.println(str1.equals(str2));

 String str2 = new String("abc");
 System.out.println(str1 == str2);
     System.out.println(str1.equals(str2));

以上代碼將會輸出
true
true
false
true
第一個true:因爲在str2賦值之前,str1的賦值操作就已經在內存中創建了一個值爲"abc"的對象了,然後str2將會與str1指向相同的地址。
第二個true:因爲String已經重寫了equals方法

Object中的共有方法:

1.clone方法

保護方法,實現對象的淺複製,只有實現了Cloneable接口才能調用該方法。java中除了8種基本傳參數的值傳遞,其他的類對象傳參數都是引用傳遞,如果不希望改變方法中的參數。我們就需要在累重複寫clone方法。

2.getClass

final方法,獲得運行時類型。

3.toString

方法的用法特別多一般子類都有覆蓋。

4.finalize

該方法用於釋放資源,因爲無法確定執行時間很少使用。

5.equals

在Object中equals和==是相同的,子類需要重寫這個方法。

6.hashCode

該方法用於hash查找,可以減少equals的使用次數,一般重新equals都會重寫hashCode 方法。

java中的四種引用

1.強引用:

只要在引用存在時。GC時就註定不會被回收。

2.軟引用:

如果要發生OOM時就會回收軟引用所指向的內存空間,如果內存空間仍然不足纔會拋出OOM。

3.弱引用:

如果發生GC的時候必定會回收弱引用指向的內存。

4.虛引用:

被稱幽靈引用,不會影響對象的生命週期,也無法通過虛引用來獲得對象的實例。僅用於在發生GC時接收一個系統通知。 當一個對象的finalize方法已經被調用了之後,這個對象的幽靈引用會被加入到隊列中。通過檢查該隊列裏面的內容就知道一個對象是不是已經準備要被回收了. 虛引用和軟引用和弱引用都不同,它會在內存沒有清理的時候被加入引用隊列.虛引用的建立必須要傳入引用隊列,其他可以沒有。

String,StringBuffer與StringBuilder之間的區別:

String是隻讀字符串,String的引用是不能被改變的。而StringBuffer與StringBuilder表示字符串是可以直接進行修改的。StringBuilder是java1.5以後引入的,用法和StringBuffer一樣,它的多線程是不安全的,它的效率高於StringBuffer。

try catch finally,try裏有return,finally還執行麼?

會執行,在方法返回調用者之前,java中允許修改finally中的返回值,try中的返回語句會等待finally語句執行執行完成後返回值,那就是說可以在finally中修改返回值。


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