Java学习笔记--包装类及自动装箱自动拆箱

Java是面向对象的语言,但并不是“纯面向对象的”,因为我们经常用到的基本数据类型就不是对象。但是我们在
实际应用中经常需要将基本数据转化成对象,以便于操作。比如将基本数据类型存储到Object【】数组或集合中的操作等等。
为解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表。这样八个和基本数据类型对应的类统称为包装类
包装类位于java.lang包
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
这八个类中除了Character和Boolean,其他都是”数字型“,”数字型“都是java.lang.Number的子类。
Number类是抽象类,因此他的抽象方法所有子类都需要提供实现
Number类提供了抽象方法intValue(),longValue(),floatValue(),doubleValue()意味着所有的数字型包装类都可以相互转型
说白了,包装类提供了基本数据类型和包装类对象以及字符串对象三者之间的转化

public class base {
public static void main(String[] args) {
        //两种方法将基本数据类型转换成包装类对象
        Integer a=new Integer(3);
        Integer b=Integer.valueOf(30);

        //将包装类对象转换成基本数据类型
        int c=b.intValue();
        double d=b.doubleValue();

        //把字符串转成包装类对象(两种方法),但如果有别的字母就无法转换
        Integer e=new Integer("999");
        Integer f=Integer.parseInt("9998888");

        //把包装类对象转换成字符串
        String str=f.toString();    //或用""+f

        //常见的常量
        System.out.println("int类型最大的整数"+Integer.MAX_VALUE);

    }
}
运行结果
int类型最大的整数2147483647

自动装箱:JDK1.5以后java提供了自动装箱和自动拆箱功能
即 基本类型的数据处于需要对象的环境中时,会自动转为“对象”
JDK1.5以前 Integer i=5是错的,需要Integer i=new Integer(5)
1.5以后 Integer i=5是对的,JVM自动帮我们执行Integer i=Integer.value(5)
自动拆箱:每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用intValue(),doubleValue()等方法
如 Integer i=5;int j=i; 这样的过程就是自动拆箱

public class Base02 {
public static void main(String[] args) {
        Integer a=3;//自动装箱Integer a=Integer.valueOf(234);

        int b=a;//自动拆箱。编译器会修改成int b=a.intValue();

        Integer c=null;//否则会返回空指针
        if (c!=null){
            int d=c;
        }

        /*
        第一个返回fales因为是两个对象,第二个返回true因为值相等
         */
        Integer in1=1234;
        Integer in2=1234;
        System.out.println(in1==in2);
        System.out.println(in1.equals(in2));


        /*
        第一个返回true是因为Integer会缓存[-128,127]之间的数字.预先建立一个catch数组,将[-128,127]之间的数存到里面
        ,很容易理解第二个返回true是因为值相等
         */
        Integer in3=-128;
        Integer in4=-128;
        System.out.println(in3==in4);
        System.out.println(in3.equals(in4));


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值