天天看點

final的深入探讨

public class Main {

    private final int value ;

    public Main(int value) {

        this.value=value;

    }

    public int intValue(){

        return this.value;

    }

    public static void main(String[] args) {

        Main m = new Main(110);

        System.out.println(m.intValue());

    } 

先給大家看個例子! 這個例子如果遇到一些對java中final不太了解的人可能有些莫名其妙,原因是沒有對final深入了解,我周圍的朋友中也有

我們來分析下:private final int value ;

可能有人對這個value是定義的final那麼它就不能指派了啊

可是 public Main(int value) {

        this.value=value;

    }

怎麼能指派呢!原因是final關鍵如果沒有在定義的時候指派,那麼它可以在構造函數中指派!

上面這個成立!

如果我們指派了呢private final int value =100; 那麼 this.value=value會報錯,表明不能指派!

為什麼隻能在構造函數中添加呢! 大家想想構造函數的作用吧!

好的我們把構造函數删除,添加一個其他函數public void  add(int value){this.value=value},

報錯了,說明不能在其他函數中指派!

網上有些文章隻是表明這個final的基本作用,例如它修飾類是什麼意思,修飾已指派的變量是什麼意思,沒有涉及到未指派的變量,在加上一些朋友也有點糊塗,是以我寫出來給大家參考一下!