Java常量与常量池学习

Java常量设计原则

  • java无const关键字
  • 不能修改——final
  • 不会修改/只读/只要一份 static
  • 方便访问 public
  • 建议变量名称全部大写

一种特殊的常量:接口内定义的变量默认是常量。

Java常量池

  • 常量池:相同的值只存储一份,节省内存,共享访问。

  • 基本类型的包装类:

    • Boolean,Byte,Short,Integer,Long,Character,Float,Double
    • Boolean:true,false
    • Byte,Character:\u0000–\u007f(0-127)
    • Short,Int ,Long:-128-127
    • Float,Double:没有缓存(常量池)
  • Java为常量字符串都建立了常量池缓存机制。

  • 基本类型的包装类和字符串有两种创建方式:
    1.常量式(字面量)赋值创建,放在栈内存 (将被常量化)
    2.new对象进行创建,放在堆内存 (不会常量化)

  • 这两种创建方式导致创建的对象存放的位置不同

不可变对象

  • 不可变对象(Immutable Object)
    1.一旦创建,这个对象(状态/值)不能被更改。
    2 其内在的成员变量的值就不能修改了。

  • 典型的不可变对象
    八个基本型别的包装类的对象和String,BigInteger和BigDecimal等的对象。

  • 可变对象(Mutable Object)
    包含有普通对象等。

不可变对象,也是传指针(引用)。由于不可变,临时变量指向新内存,外部实参的指针不改动。在这里插入图片描述

  • 不可变对象(Immutable Object)优点:
    只读,线程安全.并发读,提高性能.可以重复使用
    缺点:制造垃圾,浪费空间.

参考:1.中国大学MOOC Java核心技术

猜你喜欢

转载自blog.csdn.net/weixin_42580645/article/details/88378397