1. 程式人生 > >Java中Final修飾一個變數時,是引用不能變還是引用的物件不能變

Java中Final修飾一個變數時,是引用不能變還是引用的物件不能變

Java中,使用Final修飾一個變數,是引用不能變,還是引用物件不能變?

  是引用物件的地址不能變,引用變數所指的物件的內容可以改變。

  final變數永遠指向這個物件,是一個常量指標,而不是指向常量的指標。

  比如: final StringBuffer sb=new StringBuffer("abc");

  對sb重新賦值 sb=new StringBuffer("cde");

  會出現編譯錯誤,被final修飾的變數是不能重新賦值的;

  但是 sb.append("ced");

  是可以編譯通過的。

Final作為一個修飾符:

  1. 可以修飾類、變數、方法
  2. 被final修飾的類不能被繼承。防止子類繼承重寫父類方法
  3. 被final修飾的方法不能被重寫
  4. 被final修飾的變數是一個常量只能被賦值一次。(既可以修飾成員變數,也可以修飾區域性變數)
  5. 內部類定義在類中的區域性位置上時,只能訪問該區域性被final修飾的區域性變數。