java概念,Java基础概念
1. Java編譯程序將Java源程序翻譯成JVM可執行代碼-Java字節碼。這一過程同C/C++不同。
當C編譯器翻譯成一個對象代碼時,該代碼是為在某一特定硬件平臺運行而產生的。
因此,在編譯過程中,編譯程序通過查表將所有符合引用轉換為特定的內存偏移量。
而Java編譯器卻不將對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,
而是將這些符號引用信息保留在字節碼中,由解釋器在運行過程中創建內存布局,再通過查表確定一個方法
所在的地址。保證Java可移植性和安全性。
2. Java字節碼執行有兩種方式:
(1):即使編譯方式。解釋器先將字節碼編譯成機器碼,再執行該機器碼。
(2):解釋執行方式。解釋器通過每次解釋并執行一小段代碼完成Java字節碼
程序所有操作。
通常采用第二種方法。
3. ?Java語音中,除了new語句外沒有其他地方為一個對象申請和釋放內存。
對內存進行釋放和回收工作是有Java運行系統承擔的。
4. ?Java程序中一句連續字符串不能分開在兩行中寫,如果字符串超長,可以用
加號(+)連接。
5. ?/*..*/中可以嵌套// 注釋,但不能嵌套 /*..*/。
6. Java中的包、類、方法、參數和變量的名字,可由任意順序的大小寫字母,數字,下劃線(_)和美元符號($)組成,不能以數字開頭,不能是Java中保留關鍵字。
7. 整形常量可以分為十進制、十六進制和八進制。
十進制第一位不能是0,除數字0。
十六進制以0x或0X開頭。
八進制必須以0開頭。
長整形以L結尾。
8. 浮點型常量有float(32位),double(64位)兩種類型。為單精度和雙精度浮點數。
以后面加上F(f),或者D(d)表示。
9. 不同于C,Java的基礎數據類型在任何操作系統中都具有相同的大小和屬性。
10. char類型用來存儲諸如字母、數字、標點符號及其他符號的單一字符。與C語言不同,Java的字符占兩個字節,是Unicode編碼的。
11. 函數的重載就是在同一個類中允許同時存在一個以上的同名函數,只有它們的參數個數或者類型不同即可。
12. Java把內存劃分為兩種:一種是棧內存,一種是堆內存。
在函數中定義的一些基本類型的變量和對象的引用變量都是在函數的棧內存中分配,當一段代碼塊(也就是花括號{}之間)定義一個變量時,Java就在棧中為這個變量分配內存空間,當超過變量的作用域后,Java會自動釋放該變量所分配的內存。
堆內存用來存放由new創建的對象和數組,在堆中分配內存,由Java虛擬機的自動垃圾回收期管理。
引用變量是普通變量,定義是在棧中分配,引用變量在程序運行到作用域外后被釋放,而數組和對象本身在堆中分配,即使程序運行到使用new產生的數組和對象所在的代碼塊之外,也不會立即釋放內存,數組和對象在沒有引用變量指向它時,才會變成垃圾,不能再被使用,在隨后一個不確定的時間被垃圾回收器釋放。這也是Java比較占內存的原因。
13. 聲明數組時,無論用何種方式定義數組,都不能指定其長度
例如, int a[5]; //編譯出錯
Int a [] = new int [] {3,4,5} // 成功
14. 要創建新對象,需要使用new關鍵字和想要創建對象的類名,如:
Person p = new Person ();
等號左邊以類名Person作為變量類型定義了一個變量p,來指向等號右邊通過new關鍵字創建的一個Person類的實例對象,變量p就是對象的引用句柄,對象的引用句柄在棧中分配一個變量,對象本身是在堆中分配的。
15. “==”操作符用來比較兩個變量是否相等,equals()方法用于比較兩個對象內容是否一致。
16. Java中提供了System.gc()方法,使用這個方法可以強制啟動垃圾回收器來回收垃圾。
17. 在變量前加static關鍵字,稱為靜態成員變量。我們可以直接使用類名來訪問這個靜態變量。靜態變量在某種程度上類似其他語言的全局變量,如果不是私有的就可以在類的外部進行訪問,此時不需要產生類的實例對象,只需要類名就可以引用。
18. 不能把方法內的變量聲明為靜態。
19. 在方法前加上static關鍵字,可以調用這個方法而不必創建對象。也就是不必將方法和對象綁在一起。
20. 在靜態方法里只能直接調用同類的其他的靜態的成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因為,對于非靜態的方法和變量,需要先創建類的實例對象后才可以使用,而靜態方法使用前不用創建任何對象。
21. 靜態方法不能以任何方式引用this和super關鍵字。因為靜態方法在使用前不用創建任何實例對象,當靜態方法被調用時,this對象根本沒有產生。
22. main()方法是靜態的,因此jvm在執行main方法時不創建main方法所在的類的實例對象。
23. 嵌套類可以直接訪問嵌套它的類的成員,包括private成員,但是,嵌套類的成員卻不能被嵌套它的類直接訪問。
24. 和外部類不同的是,內部類可以聲明為private或protected。
25. 內部類也可以通過創建對象從外部類之外被調用,只要將內部類聲明為public即可。
26. 通過繼承可以簡化類的定義。Java只支持單繼承。不允許多重繼承。
27. 子類繼承父類的所有成員變量和成員方法,但不繼承父類的構造方法。在子類的構造方法里可以用super調用父類的構造方法。如果子類的構造方法中沒有顯式地調用父類構造方法,也沒用使用this關鍵字調用重載其他構造方法,則在產生子類的實例對象時,寫不寫super();效果都是一樣的。
28. 在Java中聲明類、屬性和方法時,可使用關鍵字final來修飾。final標記的類不能被繼承。
final標記的方法不能被子類重寫。final標記的變量(成員變量或局部變量)即成為常量,只能賦值一次。
29. Java中可以定義一些不含方法體的方法,它的方法體實現交給該類的子類根據自己的情況實現,這樣的方法就是抽象方法,包含抽象方法的類就是抽象類。一個抽象類中可以有一個或多個抽象方法。抽象方法必須用abstract定義,任何帶有抽象方法的類必須聲明為抽象類。
30. 抽象類不能被實例化,也就是不能用new關鍵字去產生對象。
31. 抽象類只需聲明,而不需實現。
32. 含有抽象方法的類肯定是抽象類,抽象類中的方法不一定都是抽象的。
33. 接口是特殊的抽象類,這種抽象類只包含常量和方法的定義,而沒有變量和方法的實現。
34. 可以定義一個新的接口,用extends關鍵字去繼承一個已有的接口。也可以定義一個類,用implements關鍵字去實現一個接口中所有的方法。也可以定義一個抽象類,用implements關鍵字去實現一個接口定義中的部分方法。
35. 實現一個接口就是實現該接口中所有的方法(除抽象類)。
36. 接口中的方法都是抽象的,多個無關的類可以實現同一個接口,一個類也可以實現多個無關的接口。
37. 可以用instanceof判斷是否一個類實現了某個接口,也可以用來判斷一個實例對象是否屬于一個類。If(a instanceof b);
38. Java中所有的類都是從Object衍生出來的,所有Object方法使用于所有的類。
總結
以上是生活随笔為你收集整理的java概念,Java基础概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邓白氏编码查询_外贸人常用查询工具汇总
- 下一篇: java美元兑换,(Java实现) 美元