十二、int、Integer、String转化、整型常量池

1、int Integer String三种类型之间相互转化

public class IntegerTest03 {
 public static void main(String[] args) {
  //1.int--->Integer
  Integer i1=Integer.valueOf(10);
  System.out.println(i1);//10
  
  //2.String--->Integer
  Integer i3=Integer.valueOf("20");
  System.out.println(i3);
  
  //2.Integer--->int
  int i2=i1.intValue();
  System.out.println(i2);
  
  //4.Integer--->String
  String s3=i3.toString();
  System.out.println(s3);
  
  //5.String--->int
  int i4=Integer.parseInt("123");
  System.out.println(i4);
  
  //6.int--->String
  String s4=i4+"";
  System.out.println(s4);
 }
}

2、自动装箱和自动拆箱

1)自动装箱和自动拆箱是程序编译阶段的一个概念和程序运行无关,主要目的是为了方便程序员的编码

2)jdk5.0的新特性:
   在jdk5.0以前,包装和基本类型做运算时,必须将包装类转化成基本类型才可以,而jdk5.0提供Auto-boxing/unboxing(自动拆箱和拆箱)

 

public class ZhuangXiangheChaiXiang {
 public static void main(String[] args) {
  //jdk5.o之前的
  //int--->Integer(装箱);
  Integer i1=new Integer(10);

 

  //Integer---int (拆箱)
  int i2=i1.intValue();
  
  //jdk5.0版本之后
  Integer i3=20;//自动装箱
  int i4=i3;//自动拆箱
  
  m1(90,30);//自动装箱
  System.out.println(m1(90,30));
  System.out.println(m1(90,30)+i3);//自动装箱
  
 }
 public static int m1(Integer i,Integer j){
  return i-j;//自动拆箱
 }
}

 

3、整型常量池

如果数据是在-128~127之间,java中引入了“整型常量池”,所以在该范围内,其内存地址是一样的。“整型常量池”是缓存技术,从-128~127之间的数据用的比较多,所以为了方便程序员调用,提高程序的执行效率, 凡是在-128~127之间的数据都会存储在整型常量池中,在方法区中存储,并且是一个数组,数组大小长度固定。

public class IntegerTest04 {
   public static void main(String[] args) {
    Integer i1=new Integer(10);
    Integer i2=new Integer(10);
  
    //此处不会自动拆箱成int类型后去比较i1和i2的值
    System.out.println(i1==i2);//false
    //Integer类重写了Object类的equals方法
    System.out.println(i1.equals(i2));//true
  
    Integer i3=128;
    Integer i4=128;
    System.out.println(i3==i4);//false
    

   /*以上程序的在执行的时候相当于:
    Integer i3=new Integer(128);
    Integer i4=new Integer(128);//所以上述结果为false
    */
  
    Integer i5=127;//这个程序不会在堆中创建对象,会直接从整型常量池中拿。
    Integer i6=127;
    System.out.println(i5==i6);//ture
   }
}

 

 

 

 

 

 

 

 

 

 

posted @ 2016-12-21 21:03  爱笑的berg  阅读(552)  评论(0编辑  收藏  举报