1、static類數組
一、static類的定義學習
static被稱爲靜態,能夠用來修飾類的屬性或方法。spa
若是類的某個屬性,無論建立多少個對象,屬性的存儲空間只有惟一的一個,那麼這個屬性就應該用static修飾,被static修飾的屬性稱爲靜態屬性。日誌
static屬性可使用對象調用,也能夠直接用類名調用。對象
靜態屬性的類的因此對象共享的,即無論建立了多少個對象,靜態屬性在內存中只有一個。blog
public class Employee{繼承
private String name;--------------------------非靜態類接口
private double salary;------------------------非靜態類生命週期
private static int count;-----------------------靜態類內存
}
二、static方法定義
若是某個方法不須要與某個特定的對象綁定,那麼該方法可使用static修飾,被static修飾的方法稱爲靜態類方法。
訪問權限 static修飾符 返回值類型 方法名
public static void sellticket(){
System.out.println("全部火車票都是12306賣的!")
}
三、static方法可使用對象調用,也能夠直接用類名調用建議用類名直接調用
四、什麼時候使用static方法
若是某個方法與實例無關,也就是說無論那個對象調用這個方法,都執行相同的操做,與對象沒有關係,則應該定義爲靜態方法。不須要建立對象後在使用該方法。
如:API中的Math,都是靜態方法,由於進行數學運算,與Math對象自己無關,使用類直接調用便可。
任何方法均可以直接調用靜態方法;
靜態方法不能直接調用靜態方法,須要建立對象,用對象名調用非靜態方法
五、static塊
static塊和static的屬性以及方法的性質是相同的,用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機加載類時,就會執行該代碼塊。
區別在於語法不一樣。
static塊語法:直接在代碼塊前加上關鍵字static即成爲靜態塊。
static用途
1)、靜態塊只有在類加載的時候被執行一次,無論建立多少個對象,都不會再執行。
2)、若是一個類加載的時候,總要預先作一些事情,則能夠放在靜態塊中,例如,讀取一個屬性文件,進行一些常規配置,寫一些日誌等。
3)、一個類中能夠有多個靜態塊,按照順序執行。
2、final
一、final用於定義聲明屬性,方法和類
屬性:定義就必須直接賦值或者在構造方法中進行賦值,而且後期都不能修改。
方法:定義必須有實現代碼,而且子類裏不可被繼承。
類:不能被定義爲抽象類或是接口,不可被繼承。
二、final修飾屬性
當final修飾屬性時,基本數據類型的屬性將成爲常量,不能被修改
一些數學定理中的常量常用final修飾
三、final屬性的賦值
在聲明時同時賦值,每每與static一塊兒使用
在聲明時不賦值,必須在構造方法中逐一賦值
總的原則:保證建立每個對象的時候,final屬性得知是肯定的
例:
四、final修飾參數
在方法參數面前加final關鍵字,爲了防止數據在方法體中被修改。
3、類與類的關係
一、關聯關係
1)、關聯關係定義
對象和對象之間的連接。在Java中,關聯關係的代碼表現形式爲一類作爲另外一類的屬性類型存在。
即「有」的關係:"has-a".
2)、關聯關係的方向
單向關聯:A類關聯B類。
雙向關聯:A類關聯B類,B類關聯A類;例:
3)、關聯關係的多重性
一對一關聯:一個學生只能在一個班級學習。
一對多關聯:一個學生,能夠參加多個班級學習
解決方案:集合與數組
二、依賴關係
1)、依賴關係定義(use-a)
指一個類A使用到另外一個類B
2)、依賴關係的特性
這種關係是具備偶然性的、臨時性的、很是弱的,可是類B的變化會影響到類A。
3)、依賴具體表現
在代碼層面,依賴關係表現爲類B做爲參數被類A在某個method
方法中使用
三、關聯與依賴的區別
關聯是「HAS」關係,依賴是「USE」關係
A類關聯B類,指的是B類對象做爲A類的屬性存在,稱爲「has」關係。
A類依賴B類,指的是B的對象做爲A類的方法參數存在,稱爲「use」關係。
生命週期不一樣
若是A類關聯B類,那麼建立A類的對象時實例化B類的對象,直到A類對象被銷燬,所關聯的B類對象也被銷燬。即只要A類對象存在,B類對象就存在。
若是A類依賴B類,那麼只有當A類對象調用到相應方法時,B類對象才被臨時建立,方法執行結束,B類對象即被回收,A類和B類之間的依賴關係是一種瞬時的關係。