目录
一、基本概念
1.1 八种包装类及使用场景
1.2 装箱与拆箱的概念
二、以Integer包装类为例
2.1 Integer的构造方法
2.2 通过常量获取最大值与最小值
2.3 自动装箱和自动拆箱(非常重要的面试题)
三、Integer常用方法
3.1 手动拆箱(过时)
3.2 静态方法 int parseInt(String)
3.3 静态方法 十进制转化为二进制字符串
3.4 静态方法 十进制转化为十六进制字符串
3.5 静态方法 十进制转化为八进制字符串
四、 String int Integer 类型互换
java中八种基本数据类型对应八种包装类型,属于引用数据类型,父类是java.lang.Number,间接继承Object(除了Character、Boolean以外,Character、Boolean直接继承Object)
使用场景:
调用某个方法需要传入一个数字,但是数字是基本数据类型,但是方法的参数是Object引用类型,此时便需要包装类
简言之:八种基本类型不够用,又引入八种基本类型对应的八种包装类型,如下所示
装箱:基本数据类型转化为引用数据类型
拆箱:引用数据类型转化为基本数据类型
我们首先看一下Number类中的拆箱方法,这些方法子类都有
以Integer类为例,其他是一模一样
如下图所示,当我们使用Integer类时,有下面两个构造方法,分别可传入int类型参数、String类型参数
本类的toString方法也已经给我们重写好了,不比我们再写
// 直接使用数字 从JDK9(Java9)之后便过期了Integer x = new Integer(100);System.out.println(x);
// String类型数字Integer y = new Integer("555");System.out.println(y);
这两个都是静态属性,其他的类也是这么调用
System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);
好消息:JDK1.5(java5)之后,支持自动拆箱与自动装箱
自动装箱:基本类型类型自动转化为包装类 (底层还是new了一下,依然是引用)
自动拆箱:包装类自动转化为基本类型 (Number类的方法就用不着了,因为可以直接拆箱)
更好的方便了编程,解放程序员的双手
// 自动装箱Integer x=100;
// 自动拆箱int y =x;
说明:“==”不会触发自动拆箱机制,只有加减乘除时才可触发
但是!!!下面这个地方很重要
Integer a=128;Integer b=128;System.out.println(a==b);Integer x=127;Integer y = 127;System.out.println(x==y);
这里就有一个问题,为什么“==”不可触发,但是第二个输出是true呢?
-128~127 这段数字在开发中使用的比较多,这个地方有一个整数型常量池,如果没有超过byte的取值范围,就会存储到整数型常量池中,所以在使用-128~127时就不会new对象了,但是128超出了byte取值,所以a,b在使用时会创建对象,在x,y中,保存的内存地址相同所以为true
Integer x = new Integer(1000);int y = x.intValue();
int value = Integer.parseInt("123");
使用情景:
String s = Integer.toBinaryString(3);System.out.println(s);
String s = Integer.toHexString(20);System.out.println(s);
下面这段代码也能看懂了
String s = Integer.toOctalString(8);System.out.println(s);