一、對象導論
1:多态的可互換對象
面向對象程式設計語言使用了後期綁定的概念。
當向對象發送消息時,被調用的代碼直到運作時才能确定。也叫動态綁定。
2:單根繼承結構
所有的類最終都繼承自單一的基類,這個終極基類的名字就是
Object
3:對象的建立和生命期
對象的資料處于作用域,Java完全采用了動态記憶體配置設定方式(基本類型隻是一種特例)
二、一切都是對象
1:基本類型
基本類型是一個并非是引用的“自動”變量。這個變量直接存儲“值”,并置于堆棧中
2:Java中的數組
Java確定數組會被初始化。而且不能在它的範圍之外被通路
3:作用域(scope)
Java對象不具備和基本類型一樣的生命周期。當用new建立一個Java對象時,它可以存活于作用域之外
{
String s = new String("a string"); } // End of scope
引用 s
在作用域終點就消失了。然而, s
指向的 String 對象仍繼續占據記憶體空間
import 關鍵字
訓示編譯器導入一個包,也就是一個類庫,Java中所有的代碼都必須寫在類裡。特定類
java.lang
會被自動導入到每一個Java檔案中。
5:static 關鍵字
- 隻想為某一特定域配置設定單一存儲空間,而不去考慮空間要建立多少對象,甚至根本就不建立任何對象。
- 希望某個方法不與包含它的類的任何對象關聯在一起。也就是說,即使沒有建立對象,也能夠調用這個方法。
-
作用于字段時,會改變資料的建立方式static
-
方法的一個重要用法就是在不建立任何對象的前提下就可以調用它;static
-
方法就是沒有static
的方法,不能直接調用非靜态方法,但可以傳遞一個對象引用到靜态方法裡,然後通過這個引用(和this
效果相同)來調用非靜态方法和通路非靜态資料成員。。this
三、關系操作符
1:
==
和
!=
比較的是對象的引用
2:特殊方法
equals()
的預設行為也是比較引用
四、控制執行流程
1:if else
2:switch
JDK1.7開始,switch開始支援String作為選擇因子。在switch語句中,String的比較用的是
String.equals()
。
是以,需要注意,傳給switch的String變量不能為null,同時switch的case子句中使用的字元串也不能為null
五、初始化與清理
1:方法重載
重載方法,方法名相同,形式參數清單不同(參數清單又叫參數簽名,包括參數的類型、參數的個數和參數的順序,隻要有一個不同就叫做參數清單不同)
2:重載限制
- 聲明為final的方法不能被重載
- 聲明為static的方法不能重載,但是能夠被再次聲明。
- 重載方法的傳回類型可以相同也可以不同,但僅傳回類型不同不足以成為方法的重載。
class Animal {
public static void walk() { System.out.println("Animal行走方法"); }
}
public class Horse extends Animal {
public void walk(String s) {
System.out.println("Horse四條腿行走");
}
public static void main(String [] args) {
new Horse().walk("");
public static void walk() { //重新定義
new Horse().walk();
3:成員初始化
有變量在使用前都能得到恰當的初始化。
Java 中類的成員變量會被自動初始化,但是方法裡頭的局部變量不會被自動初始化
自動初始化的進行,它将在構造器被調用之前發生
成員變量是基本類型,Java會自動初始化初值0;
成員變量是引用類型,Java會自動初始化初值null;
4:對象的建立過程
類加載檢查-->配置設定記憶體-->初始化零值-->設定對象頭-->執行成員變量的初始化-->執行init方法,執行構造方法
5:數組初始化
初始化:
-
初始化各元素值為 ,對于int[] a = new int[3];
,初始值為boolean
;false
-
初始化元素分别為int[] a = {1, 2, 3};
1, 2, 3
六、通路權限控制
- 同一個.java檔案,隻能有一個與檔案同名的public類,可以有其它非public類;
- 同一個package内的不同檔案中的類,可以互相通路。
- 不同package中的類,如需通路,需要使用全限定名,如biz.superalloy.MyClass或通過import把biz.superalloy包引進來;
- default有時候也稱friendly,它是針對本包通路而設計的
- 類中的成員變量,不聲明通路修飾符時,為“包通路權限”,有時也表示friendly,同一個檔案的不同類之間可以互相通路。
- 如果沒能為類通路權限指定一個通路修飾符,它将會預設得到包通路權限。
- 1. public修飾符具有最大的通路權限,可以通路任何一個CLASSPATH下的類,接口、異常等。它往往對于對外的情況,也就是對象或類對外的一種接口形式。
- 2. default有時候也稱friendly,它是針對本包通路而設計的,任何處于本包下的類,接口,異常等,都可以互相通路,即使是父類沒有用protected修飾的成員也可以。
- 3. protected修飾符它的主要作用就是保護子類的。它的含義在于子類可以使用它修飾的成員,其他的不可以,它相當于傳遞給子類的一種繼承的東西。
- 4. private修飾符它的通路權限僅限于類的内部,是一種封裝(Java的三大特點之一,繼承,封裝和多态)的展現。

七、複用類
1:@Override注解-它的作用是告訴編譯器我想重寫這個方法,避免不必要的異常
2:final關鍵字-使用到final的三種情況:資料、方法和類
- final 基本類型,資料編譯期常量在定義(聲明)時必須對其指派(聲明時也可以不賦(此時叫空白final),但必須在構造器中指派,是以final域在使用前總是被初始化)。
- final常量常與
一起使用,強調隻有一份。static
- final 對象引用
- final參數這一特性主要用來向匿名内部類傳遞資料
- final方法-鎖定方法,以防任何繼承類修改它的含義。這是出于設計的考慮;
- 類中所有的
方法都隐式地指定為是private
的。由于無法取用final
方法,是以也就無法覆寫它private
- final類不希望它有子類。因為final類禁止繼承,是以final類中所有的方法都隐式指定為是final的,因為無法覆寫它們
3:初始化及類的加載
類的代碼在初次使用時才加載,通常是指加載發生于構造類的第一個對象之時,但是當通路static域或static方法時,也會發生加載
(構造器也是static方法,盡管static關鍵字并沒有地寫出來。是以更準确地講,++類是在其任何static成員被通路時加載的++。)
4:初始化
初次使用之處也是staic初始化發生之處
出處:轉載請注明 https://www.cnblogs.com/sun-null/