1. 程式人生 > 實用技巧 >Java 核心技術 筆記一

Java 核心技術 筆記一

基本資料型別:
byte \ short \ int \ long 常量預設int
float \ double 常量預設double
char
boolean
引用資料型別
class : String
interface
array
自動型別轉換
byte、char、short 做運算後都變成int型別
強制型別轉換
截斷操作,可能損失精度

算數運算子:+ - * / % ++ --
+= *= ++ --不改變原有的資料型別
邏輯運算子 & | ! ^ && ||
位運算子 & | ! << >> >>>(無符號右移)
三元運算子 (條件)?表示式1:表示式2
流程控制: 順序、分支、迴圈

陣列屬於引用資料型別的引用資料型別的變數,陣列的元素既可以是基本資料型別也可以是引用資料型別。
陣列預設初始化
整型陣列 0
浮點型陣列 0.0
char型陣列 0或
boolean型陣列 false
引用資料型別陣列 null
二維陣列可以看成一維陣列作為另一個一維陣列的元素而存在
從陣列底層的執行機制看沒有多維陣列
java類及類的成員、屬性、方法、構造器、程式碼塊、內部類
特徵:封裝性、繼承性、多型性、抽象性
其他關鍵字:this、super、static、final、abstract、interface、package、import
類是抽象的,物件是類的例項
過載:在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可
同一個類、相同方法名、引數列表不同
跟方法的許可權修飾符、返回值型別、形參變數名、方法體都沒有關係
jdk5.0的新增功能:可變個數形參
可變個數形參格式:資料型別 ... 變數名
當呼叫可變個數形參的方法時,傳入引數的個數可以是0、1、2...個
可變個數形參方法與本類中其他方法名相同的方法構成過載
可變個數形參在方法的形參中,只能宣告在末尾
方法中定義的變數是區域性變數,存在棧中,
基本資料型別值存在棧中
引用資料型別,new的物件都存在堆中,物件在堆中的首地址存在棧中
賦值操作,基本資料型別賦值的是值,引用資料型別賦值的是地址

方法形參的傳遞機制:值傳遞
形參:方法定義時,宣告的小括號內的引數
實參:方法呼叫時,實際傳遞給形參的資料
值傳遞機制:如果引數是基本資料型別,實參賦給形參的是真實儲存的值
如果引數是引用資料型別,實參付給形參的是儲存資料的地址
面向物件的特徵一,封裝與隱藏
建立一個類的物件以後,通過”物件.屬性“的方式進行賦值,賦值操作只受屬性的資料型別和儲存空間的限制。
想要對屬性的額外限制條件時,將類的屬性private化,同時提供public的設定setX和獲取getX方法來對屬性進行操作。
封裝性的體現:私有的屬性、私有的方法、單例模式...
封裝性的體現需要許可權修飾符來配合。
Java規定了4種許可權:private,預設,protected,public
4種許可權可以修飾類的內部結構,屬性,方法,構造器,內部類
類只能用public和預設修飾

構造器的作用:建立物件、初始化物件屬性
如果沒有顯示的定義構造器,系統預設提供一個空參的構造器
定義構造器的格式: 許可權修飾符 類名(形參列表){}
一個類中定義的多個構造器,彼此構成過載
JavaBean是一種Java語言寫成的可重用元件,是指符合以下標準的Java類
類時公共的
有一個無參的公共的構造器
有屬性,且有對應的get,set方法
this關鍵字的使用
在類的構造器中可以顯式的使用“this(形參列表)”來呼叫其他構造器,且必須宣告在當前構造器的首行、
在類的構造器或方法中可以使用this呼叫該類的屬性或方法
面向物件的特徵二,繼承性
繼承性的好處:提高程式碼的複用性,便於功能的擴充套件,為多型性提供條件
繼承性的格式:class A extends B{}
A:子類subclass B:父類superclass
一旦子類A繼承父類B後,A就獲取了B中宣告的所有的屬性和方法
父類中private的屬性或方法,子類繼承仍然獲得了屬性和方法,只是由於封裝性不能直接呼叫
子類繼承父類後,可以宣告自己的屬性和方法,實現功能的拓展
單繼承:一個類可以由多個子類繼承,一個類只能有一個父類
如果沒有顯式的宣告一個類的父類,則此類繼承於java.lang.Object類
方法的重寫 override / overwrite
重寫:子類繼承父類以後,可以對父類中同名同參的方法進行覆蓋操作
重寫以後,當建立子類物件後,呼叫同名同參方法時執行子類重寫的方法
重寫的規定:子類重寫方法的許可權修飾符不小於父類被重寫的方法,子類不能重寫父類中private的方法
返回值型別 父類被重寫的方法返回值是void 子類重寫的返回值只能是void
父類被重寫的方法返回值是A型別,子類重寫的返回值只能是A類或A的子類
子類重寫的方法丟擲的異常型別不大於父類被重寫的方法的異常型別
子類和父類中的同名同參的方法要麼都宣告為非static的(考慮重寫),要麼都宣告為static的(不是重寫)
static的方法不能被覆蓋,隨著類的載入而載入
super關鍵字的使用
在子類的方法或構造器中使用“super.屬性“或”super.方法”來呼叫父類中的屬性或方法。
在子類的構造器中使用“super(形參列表)”的方式呼叫父類中宣告的指定構造器,且必須宣告在子類的首行
在類的構造器中,super和this呼叫其他構造器時只能二選一。子類構造器首行沒有顯式宣告時,預設呼叫父類空參的構造器
子類物件例項化過程
子類繼承父類後,獲得了父類宣告的屬性和方法
建立子類的物件,在堆空間中會載入所有父類中宣告的屬性
通過子類物件建立物件時,每一個構造器都會直接或間接的呼叫父類的構造器,直到呼叫java.lang.Object的空參構造器
雖然建立子類物件時呼叫了父類的構造器,但是隻建立了一個物件,即new的子類物件
面向物件的特徵三,多型性
父類的引用指向子類的物件
--虛擬方法呼叫,在編譯時,只能呼叫父類中宣告的方法
在執行時,實際執行子類中重寫的方法
多型性使用的前提:類的繼承關係,子類方法的重寫
多型性只適用於方法,不適用於屬性