類的定義和對象的創建
- 類class 和對象 object 是面向對象程序設計方法中最核心的概念。
- 類是對某一類事物的共性描述,定義了一類事物共有的特征屬性和功能行為。
- 對象是某類事物的個體存在,對象也稱為類的實例instance
- 類是對象的模板,有了這個模板之后才能創建一個一個具體的對象。
- 使用關鍵字“class” 定義一個類,類的特征屬性和功能行為需要定義在左右大括號內:{。。。}
- 類的特征屬性通常又稱為類的成員變量、實例變量、屬性、字段。
- 類的功能行為通常又稱為類的成員方法、函數。
- 一般將成員變量簡稱為屬性,將成員方法簡稱為方法。
使用關鍵字 ‘new’創建一個對象,創建了對象之后,可以通過 “對象名.成員名” 來訪問對象的屬性或者方法。
變量和數據類型
- 一個變量就是內存中的一塊存儲空間,可以用來存放程序運行時的數據,而且在程序運行期間,變量中的存放的數據可以改變。
- 常量在程序運行期間,存放的數據不能改變
- 變量的要素包括:名稱、數據類型、作用范圍
標識符:我們寫代碼過程中,總要給包、類、變量、方法起名稱,這個名稱就是標識符。
Java語言的標識符命名規則:
- 由字母、數字、下划線、美元符號組成
- 標識符只能以字母、下划線、美元符號作為第一個字符
- Java語言保留某些詞匯用作特殊用途,這些詞匯就是關鍵字,關鍵字不能作為標識符。
變量存儲的數據類型分為基本數據類型和引用數據類型兩種。Java語言中的基本數據類型總共有8種
關於基本數據類型的使用:
- 各種基本數據類型有固定的存儲空間大小和取值范圍,不受底層具體操作系統的影響,以保證Java程序的可移植性。
- char類型表示字符,每個字符占兩個字節,采用16位Unicode編碼。
- boolean類型數據只允許取值true或false,不可以用0 或非0 的整數代替true或false.
數據類型轉換要遵循一下原則:
- Boolean類型不可以與其他的數據類型進行轉換當數據類型 B 的取值范圍大於數據類型 A 的取值范圍時,會進行自動類型轉換,又稱隱式類型轉換。比如,將一個Long 類型的值賦給一個float類型的變量:Long x=10L;float y=x;
- 當數據類型B 的取值范圍小於數據類型A 的取值范圍時,需要進行強制類型轉換,又稱為顯示類型轉換。而且進行強制類型轉換時,可能會出現數據溢出的情況,這種情況又稱為精度丟失。比如,將一個int類型的值賦給一個char類型的變量:int x=10;char y=(char)x;
- byte、short、char之間不會直接相互轉換,這三種類型在計算時,會首先轉換為int 類型,在進行計算。
引用數據類型
- 引用類型變量其實就是C語言種的指針(Point)類型變量,這種變量存儲的是一個內存地址值。
- 引用類型變量的默認值為null,表示這個引用類型變量沒有指向具體的對象。
變量按照被定義的位置分為局部變量和成員變量:
- 在方法內部定義的變量就是局部變量,而且方法的形參也是局部變量
- 一個局部變量在使用前必須要設置初始值,而且這個局部變量的作用域就是定義該局部變量的代碼塊{。。。},也就是說在一個代碼塊{。。。}的外部不能訪問這個代碼塊{。。。}內部定義的局部變量。
- 在方法外部、類的內部定義的變量就是成員變量。
- 成員變量在定義時可以不設置初始值,此時成員變量的初始值等於變量數據類型的默認值。
- 一個成員變量時存放在某個對象內部的,只要沒有銷毀該對象,這個成員變量就一直存在。
成員方法
一個方法就是一段用來實現某個常用功能的代碼塊,方法定義的語法格式:
返回值類型可以時任何合法的Java數據類型,比如:int、boolean、Person(類),如果一個方法沒有返回值,則返回值類型就是void。
形參列表定義的是該方法被調用時,用以獲取外部輸入值得變量和變量的數據類型。形參是方法的局部變量,形參的作用域就是方法體。與形參對應的是實參,實參就是調用方法時,實際輸入給方法形參的數值。
重載
- 在一個類的內部可以定義多個方法名相同的方法,但是要求每個同名方法都有自己唯一的形參列表。這種語法機制叫做方法重載。
- 不同的形參列表是指形參個數不同,或者是形參的數據類型不同。調用同名方法時,會根據輸入的實參列表來確定具體的方法。
方法簽名
- 由方法名和形參列表組成的字符串。方法重載的含義是指多個方法的方法名相同,但是方法簽名不同。
- 方法簽名中不包含方法的返回值類型,所以兩個同名方法是否重載和這兩個方法的返回值類型是否相同無關。
構造方法
- 所有的成員方法中,有一種特殊的方法稱為構造方法。
- 構造方法的作用是初始化對象的屬性,也就是說,通常在構造方法中對成員變量進行賦值。
- 構造方法的方法名與類名是完全相同的。
- 構造方法是不能聲明任何返回值類型,既不能用int、Person等數據類型,也不能用void。
- 構造方法中不能顯示的返回一個值,即構造方法的方法體中不能有return語句
- 當某個類的代碼中沒有定義構造方法時,編譯器會給這個類添加一個默認構造,這個默認構造方法是沒有參數的,方法體也是空的,即:類名(){}。但如果某個類的代碼中定義了構造方法,則編譯器就不再給這個類添加默認構造方法。