【Java基礎】語言基礎知識

Java語言的優點

  1. 純面向對象
  2. 平臺無關性:編譯器編譯後的中間代碼由JVM解釋執行
  3. 內置類庫比較豐富簡化開發
  4. 提供完善的安全機制異常機制以及垃圾回收機制和強類型機制
  5. 除去了C++中那一理解的特性:如多重繼承,虛基類,運算符重載,指針等

Java語言和C++語言的異同

相同點:
都是面嚮對象語言,都提供了封裝,繼承,多態等特性。都具有很好的代碼維護性和可重用性。
不同點:
1. Java是解釋執行(源代碼->字節碼->JVM 解釋執行)而C++是編譯鏈接爲可執行二進制代碼。因此Java比C++慢,但是比C++具有更好的平臺無關性
2. Java是純面型對象語言,除了幾個基本數據類型(int float…)之外所有類型都是類,所有代碼都必須在類中實現;Java中也不存在全局變量或者全局函數。C++除了具有面向對象的特性之外,還具有面向過程的特性,擁有全局對象和全局變量,而且並非所有類型都是類。
3. Java沒有指針的概念,避免了空指針引起的系統問題;Java沒有多重繼承的概念,但是可以實現多個接口達到和C++多重繼承等效的效果;Java不需要程序員關係對象內存的分配,簡化編程
4. C++支持運算符重載而Java不支持;C++有宏或者include頭文件實現預處理,而Java沒有;C++支持goto語句,但是Java雖然有goto關鍵字,但是僅僅是保留關鍵字;C++支持自動強制類型轉換,而Java必須要程序員顯式的進行類型轉換

是否可以在main執行前執行一段指定代碼

可以的,雖然main是函數的入口,通常也是第一個執行的模塊,但是並一定總是最先執行。在JVM的講解書類加載的一部分內容的時候提到過,靜態代碼塊在類加載的時候就會被執行,因此可以在main方法所在類中,添加一些靜態代碼塊來實現一些需要預先執行的邏輯。

Java程序初始化順序

實例化對象的時候,對象所在的類的所有成員變量需要先進行初始化,類的成員變量全部初始化之後纔會執行類的構造函數,創建對象。類的成員變量初始化原則:
1. 靜態對象/變量優先於非靜態;靜態對象只能初始化一次而非靜態變量可以初始化多次
2. 父類優先於子類
3. 按成員變量定義的順序進行初始化

按上述的原則,有如下的初始化順序:父類靜態對象/變量,父類靜態代碼塊,子類靜態對象或變量,子類靜態代碼塊,父類非靜態變量,父類非靜態代碼塊,父類構造函數,子類非靜態變量,子類非靜態代碼塊,子類構造函數。

Java中的作用域

  1. public :被修飾變量或方法對所有類和對象都是可見的
  2. private:只可以被當前類訪問
  3. protected: 當前類以及當前類的子類(不論子類是否與父類在同一個包下),還有同一個包下的類都是可見的
  4. default: 只有當前類以及位於當前包下的類可以訪問,子類如果在當前包下也可以訪問,否則是不可以的,與protected不同

注意: private與protected不能用來修飾類,只有abstract final public 可以被用來修飾類

一個Java文件是否可以定義多個類

顯然是可以的撒,但是最多只能有一個是public的且該public類名稱必須和文件名相同

Java中沒有任何方法的接口

接口是抽象方法的集合,可以看做是特殊的抽象類。接口中的方法只有定義沒有實現,且都是抽象的;接口中成員的修飾符都是public的;接口中常量的默認修飾符是public static final的。

沒有方法的接口也叫作標識接口,標識接口對實現它的類沒有語義要求,僅僅用來說明實現該接口的類具屬於某一特定類型或者具有特定屬性。比如常見的:Cloneable Serializable等,可以通過instance of 來判定一個類是否實現了一個接口。

clone方法的作用

Java在處理基本類型數據的時候採用的是按值傳遞,但是對於其他的類類型的變量則是使用按引用傳遞。按引用傳遞的概念在參數傳遞的時候比較容易注意到也比較容易理解,但是Java的賦值運算’=’也是按引用傳遞的。這樣當需要從一個已知的對象得到一個相同狀態的對象的副本的時候,就需要使用clone來克隆一個同等狀態的對象。
實現clone()步驟:
1. 實現clone的類集成Cloneable接口
2. 重寫Object類的clone()方法,並在重寫時候調用super.clone()
3. 把淺複製的引用指向原型對象的克隆體

深複製和淺複製:
淺複製:被複制的對象的所有變量都含有和原來對象相同的值(包括引用類型和基本類型),而所有對其他對象的引用仍然指向原來的對象。(也就是說對象內部所引用的對象是複製對象和被複制對象公用的)

深複製:
被複制對象的所有變量都和原來對象有相同的值,引用其他對象的變量被指向被複制的新的對象。也就是說深複製把複製對象所引用的對象也複製了一遍(類似於遞歸複製,直到所需要複製的對象成員變量都是基本類型爲止)。

反射機制

反射機制功能:
1. 得到一個對象所屬的類
2. 獲取一個對象所有的成員變量和方法
3. 得運行時創建對象
4. 運行時調用對象方法

但是反射使用不當可能會嚴重影響系統性能

補充:創建對象的方法
1. 反射
2. clone
3. new
4. 反序列化

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