常量
常量:不会修改的变量
Java中没有为常量定义专属的关键字(例如 C++中有定义常量的关键字Const),而是采用多个关键字组合的形式 public static final
下面对上述几个关键字进行解释:
- public 方便访问
- static 在类中只保留一份(对应常量只读)
- final Java中用final修饰的变量不能被再次赋值
注:
- 建议常量名全部采用大写字母,例如 PI ( π \pi π)
- 接口中定义的变量默认是常量
常量池
常量池: 为节省内存,共享访问,将相同的值仅保存一份
Java中为很多基本类型的包装类型,字符串建立了常量池
例如:
- Boolean: true, false
- Character: 0~127
- Byte, Short, Integer, Long: -128~127
若字符串的字面值相同,编译器也会自动优化,仅在内存中保存一份,例如:
String s1 = "abc";
String s2 = "abc";
String s3 = "ab" + "c";
String s4 = "a" + “b" + "c";
如上面代码,此时内存中仅有一个字符串常量,字面值为"abc",变量s1, s2, s3, s4均指向它,内存中不存在字符串"ab"、“a”、“b"以及"c”。