1. 程式人生 > >java中final修飾方法傳入引數的含義

java中final修飾方法傳入引數的含義

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