0
点赞
收藏
分享

微信扫一扫

Java对象池


      在JDK5.0里,JVM在启动的时候会实例化9个对象池,这9个对象池分别用来存储8种基本数据类型的包装类对象和String对象。当我们直接用8种基本类型的包装类的对象或用双引号括起来一个字符串时,JVM就要在其对象池里面去找是否有一个相同的对象,如果有,就直接从对象池中拿这个现成的对象,如果没有,就在对象池里面创建一个新的对象。
 1、基本类型的包装类对象池

Integer i1 = 5;//5在对象池中取
    Integer i2 = 5;
    System.out.println(i1==i2);//true,i1和i2都是从对象池中取的同一个对象

而:

Integer j1 = 200;//超过Integer对象池存放数的范围,即:直接赋给一个Integer对象
  Integer j2 = 200;
  System.out.println(j1==j2);//false


由于Integer对象池只存放从-128--127之间的整数,若超过这个范围,则直接创建一个新的Integer对象!
 
 类似还有Long、Byte、Short、Float……
2、String类
   

创建String对象有两种方法:
      String str1 = "xcbeyond";
      String st2 = new String("xcbeyond");
       这两种不同的创建方法是有差别的,第一种方式是在对象池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象。
  因此,就有System.out.println(str1==str2);//false


 
 总结:对象池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。
举报

相关推荐

0 条评论