JavaAPI-包装类

包装类

  • 包装类是用来解决基本类型不能直接参与面向对象开发的问题。使得基本类型可以以“对象”的形式存在
  • 基本类型转换成包装类:
// 基本类型转换成包装类
//Integer i1 = new Integer(1);
//Integer i2 = new Integer(1);
//== false(每new一次就创建了一个新的地址); equals()方法 true(java内部的方法都重写了equals方法)
//这种方法一般不用

//java推荐用valueOf转换
//Integer i1 = Integer.valueOf(1);
//Integer i2 = Integer.valueOf(1);
//== true; equals()方法 true

Integer i1 = Integer.valueOf(128);
Integer i2 = Integer.valueOf(128);
//== false(超出范围就不是同一个地址了); equals()方法 true
//This method will always cache values in the range -128 to 127(-128到127存储的是同一个地址)

System.out.println(i1==i2);
System.out.println(i1.equals(i2));
  • 包装类转换为基本类型
Double d1 = Double.valueOf(13.4); //包装类 如果此处是128.0
	 
double d = d1.doubleValue(); //包装类转换成基本类型
System.out.println(d); //13.4    //128.0

int i = d1.intValue();
System.out.println(i); //13      //128

byte b = d1.byteValue();
System.out.println(b); //13      //-128 此处byte超出范围溢出
  • 包装类常用功能
  1. 获取最大值最小值
// 获取int最大值
int imax = Integer.MAX_VALUE;
System.out.println(imax); //2147483647
// 获取int最小值
int imin = Integer.MIN_VALUE;
System.out.println(imin); //-2147483648

long lmax = Long.MAX_VALUE;
System.out.println(lmax); //9223372036854775807
long lmin = Long.MIN_VALUE;
System.out.println(lmin); //-9223372036854775808
  1. 包装类可以将字符串解析为基本类型,前提是该字符串描述了基本类型可以保存的值
//字符串转数字
String str = "123"; //如果此处是123.0  //如果是"a"
int i = Integer.parseInt(str);
System.out.println(i); //123   //123.0不是int,所以报错  //"a"不是int,所以报错

double d = Double.parseDouble(str);
System.out.println(d); //123.0  //123.0  //"a"不是double,所以报错
  • 包装类的自动拆装箱功能jdk1.5推出的(包装类跟基本类型间可直接相互转换(编译器给你自动转换好了))
int a = 1;
//触发了编译器的自动装箱特性,下面的代码会被编译器改为:Integer i = Integer.valueOf(i);
Integer i = a;

//触发自动拆箱特性: a = i.intValue();
a = i;

简述自动装箱和拆箱的原理

原理描述:

  • 从jdk1.5开始,编译器提供了自动装箱和自动拆箱机制,编译器在生成类的字节码时,插入必要的方法来完成

  • 自动装箱的原理为:Integer a = 100;
    编译器在编译的过程中的代码实现为:Integer a = Integer.valueOf(100);
    自动装箱时,调用了Integer的valueOf方法将int类型的值100转换成了Integer类型

  • 自动拆箱的原理为:int c = a;
    编译器在编译过程中的代码实现为:int c = a.intValue();
    自动拆箱时,调用了Integer的intValue方法,将Integer类型的变量转换成了int类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值