final關鍵字用法總結

final關鍵字在java中比較重要,也比較基礎。塔通常指的是“這是無法改變的”,不想做改變可能有兩種原因:設計或效率。
final關鍵字可以修飾數據,方法和類。
1、修飾數據
在final修飾數據時,表示此數據不可改變。修飾數據又分爲兩種情況:修飾基本類型變量和對象變量。
在修飾基本類型時,表示此變量的值不可改變:
在修飾對象變量時,表示引用不可邊,而對象值可變
/*
 *  結果如下:
    fd1 :  i4 = 15, INT_5 = 18
	Create New FinalTest
	fd1 :  i4 = 15, INT_5 = 18
	fd2 :  i4 = 13, INT_5 = 18
 */
class Value
{
	int i;//包類可見
	public Value(int i)
	{
		this.i = i;
	}
}


public class FinalTest
{
	private static Random rand = new Random(47);
	private String id;
	public FinalTest(String id)
	{
		this.id = id;
	}
	//編譯時期初始化
	private final int valueOne = 9;
	private static final int VALUE_TWO = 99;
	public  static final int VALUE_THREE = 39;
	//運行時被初始化,並不是編譯時初始化
	private final int i4 = rand.nextInt(20);
	static final int INT_5 = rand.nextInt(20);
	private Value v1 = new Value(11);
	private final Value v2 = new Value(22);
	private static final Value VAL_3 = new Value(33);
	
	//數組
	private final int[] a = {1,2,3,4,5};
	
	public String toString()
	{
		return id+" : "+" i4 = "+i4+", INT_5 = "+INT_5;
	}
	
	public static void main(String[] args)
	{
		FinalTest fd1 = new FinalTest("fd1");
		
		//fd1.valueOne++;不能被重新賦值
		fd1.v2.i++; //v2是final類型的變量,但是他是對象變量,final修飾對象變量時,對象的引用不能改變,但是對象值可以改變
		fd1.v1 = new Value(9);//正確,對象v1的引用可以改變
		//fd1.v2 = new Value(9);//錯誤,對象v2的引用不能改變,因爲v2是final類型的
		//fd1.VAL_3 = new Value(9);//錯誤,對象VAL_3是final類型的,不能改變其引用,同時給出警告,靜態變量應以靜態變量的方式訪問。
		//fd1.a = new int[6];錯誤,數組也是對象,不能改變其引用
		//但是可以改變對象的值
		for(int i = 0;i<fd1.a.length;i++)
		{
			fd1.a[i]++;
		}
		System.out.println(fd1);
		System.out.println("Create New FinalTest");
		FinalTest fd2 = new FinalTest("fd2");
		//i4的值是唯一的,但INT_5的值不會隨着創建新對象而改變,因爲它是static,在類轉載的時候就被初始化了,而不是每次創建新對象時都被初始化
		System.out.println(fd1);
		System.out.println(fd2);
	}
}

2、修飾方法
    被final修飾的方法在繼承類中不能被修改。
3、修飾類
    被final修飾的類不能被繼承

final class A
{
	public final void methodA()
	{
		System.out.println("A 的方法");
	}
}
//被final修飾的類不能被繼承
/*class B extends A
{
	//錯誤,不能覆蓋final方法
	public final void methodA()
	{
		
	}
}
*/
public class FinalTest1
{
}


發佈了128 篇原創文章 · 獲贊 14 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章