Java中final和static關鍵字總結

1、final:

final關鍵字可用於類、方法、變量前。

final修飾的類不可被繼承,例如java.lang.Math就是一個 final類,不可被繼承。

final修飾變量,在顯示初始化後不可改變變量值,用於常量定義。如果final變量是引用變量,則不可以改變它的引用對象,但可以改變對象的數據(屬性)。

final修飾的方法不可被重寫。

錯誤案例)

package com.sp;

public final class Fish {
	
       final String name = "魚";
	
	public void method(){
		name = "魚";  #此時變量屬性不可再改變
	}
	
}

2、static:

2.1)static關鍵字用來修飾變量、方法、遊離塊和內部類,稱這些變量、方法和內部類爲靜態變量、靜態方法和靜態內部類。

2.1.1)案例

package com.sp;
import java.util.Calendar;
public class Person {
String name;
static int count ;//人口總數   靜態屬性  
public Person() {
count++;
}
public static void main(String[] args) {
Person p1 = new Person();
System.out.println("人口總數:"+p1.count);
Person p2 = new Person();
System.out.println("人口總數:"+p2.count);
Person p3 = new Person();
System.out.println("人口總數:"+p3.count);
}
}

2.2)static關鍵字聲明一個屬性或方法是和類相關的,而不是和類的某個特定的實例相關,因此,這類屬性或方法也稱爲“類屬性”或“類方法”。

2.3)如果訪問控制權限允許,可不必創建該類對象而直接使用類名加“調用。

2.4)static 不可用於修飾構造器

2.5)static修飾的屬性和方法,對象之間是共享的。

2.6)static修飾的屬性和方法,可以直接用類名調用。

2.7)static遊離塊。

2.7.1)static除了用於修飾變量和方法外,還可以用於修飾類中的遊離塊(自由塊)。

2.7.2)所謂類的“遊離塊”,就是在類中用“{}”包含起來的不屬於任何方法或構造器的代碼段。

2.7.3)使用static來修飾的遊離塊只在類加載的時候執行一次,通常用於初始化靜態變量。

2.7.3.1案例1)

package com.sp;


public class Person {
	String name;
	static int count ;	//人口總數   靜態屬性  
	
	public Person() {
		count++;
		System.out.println("執行了構造器");
	}
   
	static {
		System.out.println("執行了靜態遊離塊");
	}
	
	{
		System.out.println("執行了遊離塊");
	}


 public static void main(String[] args) {
	Person p1 = new Person();
	 }
 }
 //執行了靜態遊離塊,執行了遊離塊,執行了構造器。

2.7.3.2 案例2)

父類:

package com.sp;
public class Anmail {
public Anmail(){
System.out.println("執行了父類構造器");
}
static {
System.out.println("執行了父類靜態遊離塊");
}
{
System.out.println("執行了父類遊離塊");
}
}

Person類繼承:

package com.sp;
import java.util.Calendar;
public class Person extends Anmail {
String name;
static int count ;//人口總數   靜態屬性  
public Person() {
count++;
System.out.println("執行了子類構造器");
}
   
static {
System.out.println("執行了子類靜態遊離塊");
}
{
System.out.println("執行了子類遊離塊");
}
 public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
 }
 
 }
 //執行了父類靜態遊離塊
 //執行了子類靜態遊離塊
 //執行了父類遊離塊
 //執行了父類構造器
 //執行了子類遊離塊
 //執行了子類構造器

由於博主目前在找框架,很多案例不是很多。如有不足,可指教。


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