一、Integer简介
Integer类将基本类型int的值包装在对象中。Integer类型的对象包含一个int类型的字段。
此外,这个类提供了几个将int转换为String和String转换为int的方法,以及其他处理int时有用的常量和方法。
在java9以后,Integer的构造方法均已废弃使用,没有构造方法。
Integer a=newInteger("1");
1. 开箱与装箱
开箱装箱主要针对于Java中出现的几种包装类,比如int
与之对应的Integer
。通俗一点的理解就是,Integer
可以与int
自动的相互转换,这个转换过程对于开发人员来说是透明的,JVM在底层帮我们进行了转化。
//装箱
Integer i = 10; //Integer i = new Integer(10)
在JVM底层,它帮我们调用了Integer.valueOf(int x)
,这就是所谓的装箱过程。
//拆箱
int b = i; //int i = Integer.intValue(i)
在JVM底层,它帮我们调用了Integer.intValue(int x)
,这就是所谓的拆箱过程过程。
2. 开箱与装箱存在的缓存
Integer默认缓存[-127,128]
之间的数,当数不处于缓存区间,则会创建新的对象。注意:缓存只能在自动装箱
或者是调用Integer.valueOf(int x)
才会有用。
Integer a = new Integer(11)
Integer b = new Integer(11)
a == b ? // false
为什么为false
?,因为a
,b
是两个对象,两个对象用==
,当然不相等啊,这比较的是内存地址,hashcode。用equals
才是值(value)的比较。
Integer a = 11
Integer b = 11
a == b ? // true
这里为什么又是true
?因为JVM自动调用Integer.intValue(int x)
(自动装箱),且数值位于[-127,128]
之间。
int a1 = Integer.parseInt("127");
int a2 = Integer.parseInt("127");
System.out.println(a1 == a2); //true
Integer.parseInt()返回值是int 。
Integer a1 = Integer.parseInt("127");
Integer a2 = Integer.parseInt("127");
Integer b1 = Integer.parseInt("128");
Integer b2 = Integer.parseInt("128");
System.out.println(a1==a2); //true
System.out.println(b1==b2); //false
同上,Integer.parseInt()返回值是int,则JVM再次进行自动装箱,执行Integer.intValue(int x)
方法。
二、常用方法
1. Integer.toString(int i, int radix) 将数值 i 转化为 radix 进制字符串。
2. Integer.parseInt(String s, int radix) 将字符串 s 转化为 radix 进制 int 。
3. Integer.valueOf() 将String、int转化为 Integer。
4. equals() 比较值是否相同
5.
compareTo()
Integer.compare()
如果x == y,值为0;如果x < y,则值小于0;如果x >y大于0
6.
sum( int a, int b ) //求和
max( int a, int b ) //求最大值
min( int a, int b ) //求最小值