在方法參數前面加final關鍵字就是爲了防止數據在方法體中被修改。web
主要分兩種狀況:第一,用final修飾基本數據類型;第二,用final修飾引用類型。
第一種狀況,修飾基本類型(非引用類型)。這時參數的值在方法體內是不能被修改的,即不能被從新賦值。不然編譯就通不過。例如:
code
1 public static void valid(final int ag){2 ag=9;3 ag=10;4 }
錯誤提示:
第二種狀況,修飾引用類型。這時參數變量所引用的對象是不能被改變的。做爲引用的拷貝,參數在方法體裏面不能再引用新的對象。不然編譯通不過。例如:orm
1 public static void valid(final String[] ag){2 ag=new String[9];3 }
這個的提示和上面是同樣的。:「 The final local variable param2 cannot be assigned. It must be blank and not using a compound assignment.「對象
可是對於引用,若是我是這樣,則不會報任何錯,徹底能編譯經過。it
1 public static void valid(final String[] ag){2 ag[0]="5";3 System.out.println(ag);4 }
因此,final這個關鍵字,想用的話就用基本類型,仍是頗有做用的。引用類型,仍是算了吧。編譯