java中final修飾方法傳入引數的含義
阿新 • • 發佈:2018-11-13
final型別修飾的引數分為兩種型別 基本型別 與引用型別
引數加final
1、斯坦福教授說的好,方法可以比喻成一臺機器(麵包機),沒錯,在我的機器(方法)裡面,我要的引數加了final(要原料),你給我傳過來的引數,機器裡面就無法改了,也就是說在機器裡的這個引數,一直指向的都是你傳進來的引數。
public class FinalNBA { public static void main(String args[]) { Curry curry = new Curry(); curry.setSmallName("small student"); printAll(curry); System.out.println(curry); }
public static void printAll(final Curry temp){ temp.setSmallName("fk do it"); System.out.println(temp.getSmallName()); // temp = new Curry(); 傳送進來的Curry引用是final,不可以再賦值了,這裡一定會報錯哦! } }
2、總結,無論引數是基本資料型別,還是引用資料型別,只要加了final,不好意思,該引數不可以再賦值(實參傳進來給形參,就相當於初始化完成)。。。。可以防止在方法裡面不小心重新賦值,造成一些不必要的麻煩!!!
3、不加final的引數,可能會出現的錯誤是
public static void printAll(Curry temp){ temp = new Curry(); //這就是出現的問題,又new了一個庫裡,與呼叫該方法時傳進來的庫裡毫無關係了!! temp.setSmallName("fk do it"); System.out.println(temp.getSmallName()); }
最後關於final修飾的變數是引用不能改變還是引用的物件不能改變:https://blog.csdn.net/i_am_tomato/article/details/46762081