首頁  >  問答  >  主體

java - public static final 定义的变量是用来干什么的?

我在项目中看到一个类里定义的变量都是public static final的,问了一下同事说是常量类,为什么要这么定义呢?是因为static是全局的,final是不可修改的吗?那这和定义一个private变量再定义一个get方法有什么区别?

PHP中文网PHP中文网2718 天前620

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-04-18 10:30:39

    先回答問題

    • static是為了讓其成為類別的成員,而不是物件的成員,這樣用起來就方便了

    • public是為了方便訪問

    • final則是表示這是常數,不能修改

    • private的對象,然後定義get、set是為了存取控制,是一種常規的封裝

    • 綜上,public static final可以讓訪問變得很方便,而且不會被修改。一般可以放配置訊息,還有一些狀態碼的定義。

    其他的補充:

    • static修飾的物件是放在引用的根下的,意味著幾乎不會被回收

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:30:39

    static 是靜態的這樣被static修飾過得變量,可以直接用過類名.變量名的方式調用, 而不需要通過類的實例化對象引用
    final 修飾變量多用於聲明一個常量在變量被第一次賦值了之後,這個變數就相當於一個常數或是可以理解成這個變數的值固定了,值無法被修改

    回覆
    0
  • 迷茫

    迷茫2017-04-18 10:30:39

    全域常數。例如專案全域配置,就可以用public static final修飾

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 10:30:39

    定義了private,其他類別下面就無法存取。那這樣的常數定義又有什麼意義呢。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:30:39

    靜態常數 舉個栗子

    public class Constant {
    
        public static final int DEAFULT_TAG = 0xcc33;
    
        public static final int DEFAULT_VERSION = 1;
    
    
        public static final Long PHOTO_PRICE = 1L;
    
    
        public static final String OSS_STYLE = "?x-oss-process=style/photo_printer";
    }

    上邊的 Constant做為一個常數類,我在其餘各種地方需要調用常數的時候

    直接使用 Constant.OSS_STYLE 就好了

    回覆
    0
  • 阿神

    阿神2017-04-18 10:30:39

    說白了就是為了方便訪問,增加代碼閱讀性,性能上倒是沒有太大的差異.

    回覆
    0
  • 取消回覆