您好,登錄后才能下訂單哦!
本篇內容介紹了“Java初始化與清除的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1、對象的創建與初始化是同一個概念,不能分離
2、構造函數名必須與類名完全相同,某種意義上講,構造函數可以看成靜態方法,它對于同一個類的每個對象都是一樣的,且執行它的時候對象還未創建好
3、默認構造函數(default constructor)是無參數的,編譯器將無參構造函數(可能是自己定義的)視為默認構造函數
[@more@]
4、構造函數可以有參數,一定沒有返回值(與void型方法不是同樣概念,void是編寫者自行確定不返回任何值)
5、可以重載(overloading)構造函數
6、重載規則(適用于全部重載):每一個經過重載的方法都必須有唯一的參數類型的列表
7、new一個對象的時候,new表達式返回這個新創建對象的引用(reference)
8、創建對象是給一段內存空間起名字,方法是一個動作的名字,這都屬于名字管理的范疇
9、實參,調用方法時賦予的參數;形參,方法定義時所聲明的參數
10、this關鍵字只能用于非static方法內部,注意是方法內部,不是類定義內部,this是對象引用的標識符,它指的是一個對象,用在類定義范圍內是沒有意義的,常被用于return語句以返回當前對象的reference
11、可以用this在一個構造函數中調用另一個構造函數,但只能調一個,稍微想想就明白了,一個對象不能被初始化兩次,那構造函數顯然也不能順序執行兩次
12、在非構造函數的方法中,不能調用任何構造函數
13、Java的垃圾回收機制只能回收用new分配的內存
14、finalize()方法,垃圾回收機制在釋放對象索占用的內存的時候,會先調用finalize()方法,進行一下“臨終關懷”,比如在此方法中釋放非new分配的內存
15、C++中,對象總是會調用析構函數(destructor)來清理自身,但Java對象不總是會被回收,垃圾回收也不是析構(destruction)
16、垃圾回收器會不會啟動,什么時候啟動,都是無法確定的事,所以finalize()什么時候執行也無法確定,它們是靠不住的
17、System.gc()可以強制進行垃圾回收,也就是強制執行finalize()
18、finalize()還可以被用來檢查對象的中止條件(termination condition),比如對象是一個打開的文件,則可以用finalize()檢查它是否已經被關閉
19、finalize()是在非常特殊的場合才會用到的,比如:內存是以創建對象以外的形式被分配給對象的,即Java程序調用非Java程序,以native method來分配的內存,比如調用C或C++的malloc(),如果不在finalize()里調用free(),內存就不會被釋放,會發生泄漏
20、C++對象如果以本地(local)形式創建(不用new),是創建在棧里的(delete對象時會調用析構函數來釋放);Java不允許創建本地對象(local objects),必須用new,分配在堆里(堆比棧慢)
21、垃圾回收不僅僅是回收空間,還將對象重新排列緊湊,使得堆指針指向大塊的未使用空間,提高分配新內存的速度
22、不同JVM對垃圾回收可能有不同實現機制,常見的有:停止——復制(stop-and-copy)、標記——清掃(mark-and-sweep)、以及在兩種之間進行“自適應”
23、為某個類創建第一個對象時,裝載器才裝載該類,一般如此
24、裝載一般采用lazy evaluation(惰性編譯),編譯器只在必要的時候才編譯代碼,這是現在JDK中Java HotSpot技術采用的方法,代碼執行的次數越多,速度就越快
25、方法內定義的變量如果使用前未初始化,將會有編譯時錯誤,類的成員變量或對象的引用如果未初始化,Java會給予默認初值,其中引用的默認初值為null,此時如果要使用這個引用,將會出現運行時錯誤,即NullPointException
26、編譯器對類成員變量的賦初值是在構造函數之前執行的,無論成員變量在類定義體的什么位置,在類內部,變量定義的順序決定了初始化的順序
27、某類的第一個對象創建時的完整順序是:
->分配空間
->存儲空間清零(使用java默認值來初始化全部成員變量,對象中的所有基本類型數據被設置成默認值,引用設置成null)
->初始化靜態成員變量(使用自定義的默認值)
->初始化非靜態成員變量(使用自定義的默認值)
->執行構造函數
28、靜態成員變量只有在第一次被訪問或該類的第一個對象被創建時才被初始化,即,只在必要時刻(類被初次加載時)才被初始化,初始化后就不能更改了
29、可將對靜態/非靜態成員變量初始化的語句分別用{}圍起來組成一個塊(或叫做子句)
30、建議采用int[] a1;的形式來定義數組,但int a1[];也是合法的,java不允許指定數組大小
31、數組是對象序列,也可以看作是一種特殊對象,即使里面的元素是基本類型,數組也是對象,可以用int[] a = new int[20]來分配存儲空間,也可以直接用a1 = a2;來賦值,注意用=賦值的時候只復制了引用
32、如果數組里的元素不是基本類型,則必須對每一個都new一次,才算每個元素都真正有了空間,否則還只是個引用數組
33、如果數組越界,編譯不會有問題,但會產生運行時錯誤,即Exception
“Java初始化與清除的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。