java中八种包装类之Integer

前言

java8基本数据类型有对应了八种包装类(均属于引用数据类型)
byte----->java.lang.Byte
short----->java.lang.Short
int----->java.lang.Integer
long----->java.lang.Long
float----->java.lang.Float
double----->java.lang.Double
boolean----->java.lang.Boolean
char----->java.lang.Character

这里只说Integer包装类

Integer类的装箱与拆箱

问:为什么要包装?
答:方便开发,若一个方法的参数是Object类型,则基本数据类型无法传入此方法,所以可以将基本数据类型包装起来传入此方法。

代码举例:

public class IntegerTest01 {
    public static void main(String[] args) {
        //基本数据类型像引用数据类型的转换(包装)
        //基本数据类型--->引用数据类型(装箱)
        Integer i=new Integer(123);

        //引用数据类型--->基本数据类型(拆箱)
        float f=i.floatValue();
    }
}

关于Integer的构造方法

Integer(int)
Integer(String)
访问包装类的常量,来获取最大值和最小值
获取最大值:

Integer.MAX_VALUE

获取最小值:

Integer.MIN_VALUE

代码举例:

public class IntegerTest02 {
    public static void main(String[] args) {
        System.out.println("int的最大值:"+Integer.MAX_VALUE);
        System.out.println("int的最小值:"+Integer.MIN_VALUE);
    }
}
/*
输出结果:
int的最大值:2147483647
int的最小值:-2147483648
*/

自动拆箱装箱

自从java5之后,引入了自动拆箱装箱的方法,操作更简便了。
代码举例:

public class IntegerTest03 {
    public static void main(String[] args) {
        //自动装箱:基本数据类型转换为包装类
        Integer i=100;
        //自动拆箱:包装类转换为基本数据类型
        int y=i;

        Integer z=1000;//引用数据类型z,z保存了一个对象的内存地址
        //这里自动拆箱,+两边都是基本数据类型
        System.out.println(z+1);

        Integer a=1000;//Integer a= new Integer(1000)
        Integer b=1000;//Integer b= new Integer(1000)
        //“==”比较的是二者内存地址(注意:“==”不会自动拆箱)
        System.out.println(a==b);//false
    }
}
/*
输出结果:
1001
false
*/

面试题

问:分析以下代码输出结果是什么?为什么?
public class IntegerTest04 {
    public static void main(String[] args) {
        Integer a=128;
        Integer b=128;
        System.out.println(a==b);

        Integer x=127;
        Integer y=127;
        System.out.println(x==y);
    }
}

答案:

false
true

为什么?
答:java为了提高程序的效率,将 [-128~127] 之间的所有包装对象提前创建好,储存在方法区的整数型常量池中,目的就是只要用这个区间的数据,就不需要再new对象了,直接从整数型常量池中拿出来用。

分析a和b
a和b做比较是false,原因是128并不在这个整数型常量池中,Integer a、Integer b相当于创建了两个不同的对象,他们指向不同的内存地址,而且“==”就是比较内存地址,所以地址不同,结果就是false

分析x和y
x和y作比较是true,因为上述所说127是储存在整数型常量池中的,所以x,y保存的内存地址同时都指向了这个127,内存地址相同,“==”比较内存地址结果也是相同的,结果就是true
Integer的内存结构

Integer常用方法:parseInt()

这个方法的目的是将字符串转换成int类型,注意:只能转换“123”、“789”这种数字型字符串
代码举例:

public class IntegerTest05 {
    public static void main(String[] args) {

        	//Integer a=new Integer("中国人");
            //运行时出现异常。(数字格式化异常)
            //java.lang.NumberFormatException
            //System.out.println(a);

        //parseInt()方法 parseFloat parseDouble.....
        //将字符串转换为数字
        int retValue =Integer.parseInt("123");
        System.out.println(retValue+100);//这里123已经转换成int类型了,“+”左右都是int类型

    }
}
/*
输出结果:
223
*/

String、int、Integer互相转换

public class IntegerTest06 {
    public static void main(String[] args) {

        //String --> int
        String s1="100";
        int i1= Integer.parseInt(s1);
        System.out.println(i1+1);//101

        //int --> String
        String s2=i1+"";//"100"
        System.out.println(s2+1);//"1001"

        //int --> Integer
        Integer x=1000;//自动装箱

        //Integer --> int
        int y=x;//自动拆箱

        //String --> Integer
        Integer k=Integer.valueOf("123");

        //Integer --> String
        String e=String.valueOf(k);
    }
}

String、int、Integer互相转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值