java包装类

java包装类

1.java为基本数据类型准备的八种包装类,属于引用的数据类型

2.思考:为何需要八种包装类,目的??

一、八种基本数据类型对应的包装类

在这里插入图片描述

二、类的层次结构

在这里插入图片描述

除了Boolean和Character直接继承Object其余的继承的是Number

三、Number中的公共方法

3.1 Number是一个抽象类,无法实例化

3.2 包装类转换为引用数据类型

 // 创建 Integer类型的对象,通过包装123使其为包装类型
 Integer integer = new Integer(123);
 // 调用父类 Number的方法将保包装类转换为基本数据类型
 int i = integer.intValue();
 System.out.println(i); // 123

将基本数据类型 – > 引用数据类型 叫做装箱

引用数据类型 —> 基本数据类型 叫拆箱

byteVaue(),shortVaue(),intValue(),longValue(),floatValue()和 doubleValue()方法都是用来拆箱的

由于存在自动拆箱和自动装箱,所以Number里面的方法无用了

四、Integer的构造方法

4.1 Integer(int value)

 Integer integer = new Integer(12);
 System.out.println(integer);

4.2 Integer(String s)

Integer integer = new Integer("12");
System.out.println(integer);

Integer integer = new Integer("i love java");
// 不可以将文字包装为 Integer,编译时没问题,运行时异常

五、Integer的方法

5.1通过访问包装类的常量,来获取最大值和最小值

 //通过访问包装类的常量,来获取最大值和最小值
 System.out.println("int的最大值"+Integer.MAX_VALUE); // int的最大值2147483647
 System.out.println("int的最小值"+Integer.MIN_VALUE);//int的最小值-2147483648

5.2(重点) static int parseInt(String s)

将字符串类型----> int类型

String s = "12";
int ss = Integer.parseInt(s);
System.out.println(ss);

网页上面输入的100数字其实是,“100”字符串

后台数据库中要求存储100数字,需要java程序将数据转化int


5.3了解的方法

static String toBinaryString(int i) 静态方法,将十进制转化为二进制字符串

String s = Integer.toBinaryString(3);
System.out.println(s);

static String toHexString(int i) 静态方法,将十进制转化为十六进制字符串

String s = Integer.toHexString(16);
System.out.println(s); // 10

static String toOctalString(int i)静态方法,将十进制转化为八进制字符串

String s = Integer.toOctalString(8);
System.out.println(s);

六、jdk1.5后的自动拆箱和自动装箱

自动装箱:基本数据类型自动转换成包装类。

自动拆箱:包装类自动转换成基本数据类型。

由于存在自动拆箱和自动装箱,所以Number里面的方法无用了

// 自动装箱
Integer x = 100; // 虽然自动转换,但是底层还是new 				     Integer(100),x里面保存的地址值.

System.out.println(x + 1);
// + 两边需要是基本数据类型,所以在相加的时候会自动转换.
// 只有 + - * / 运算的时候才会触发自动装箱和自动拆箱。
// == 比较的是地址值,不会触发自动装箱和自动拆箱.

 // 自动拆箱
int y = x;

// x是一个变量,保存的是内存地址

七、奇葩案例,面试题

7.1解释程序的原因

Integer a = 128;
Integer b = 128;
System.out.println(a == b); // false

Integer x = 127;
Integer y = 127;
System.out.println(x == y); // true,内存地址相同.

java为了提高程序的执行效率将 -128到127,所有包装对象提取创建好,放入到整数性常量池里面,在使用 -128—127之间的数据的时候就不在new对象了

== 永远判断的对象的内存地址

八、数据类型的相互转换

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值