Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。
Integer 是int的包装类,
1.intValue()是java.lang.Number类的方法,Number是一个抽象类。Java中所有的数值类都继承它。也就是说,不单是Integer有intValue方法,Double,Long等都有此方法。
2.此方法的意思是:输出int数据。每个数值类中具体的实现是不同的。例如:
Float类和Double类的intValue方法,就是丢掉了小数位,而Long的intValue方法又不一样的
Integer i = new Integer(100);
int b =i.intValue();
意思是 以 int 类型返回该 Integer 的值
String s = “123”;
int n = Integer.parseInt(s);
根据字符串去获取int类型的值
int m = 20;
String s = Integer.toString(m);
根据int 获取string值
int m = 12;
Integer in = m;
//Integer类型会自动转换为int类型
自动装箱和拆箱
自动装箱 即自动将基本数据类型转化为对应的封装类型。成为一个对象以后就可以调用对象所声明的所有的方法
//声明一个Integer对象
Integer num = 10; //以上的声明就是用到了自动的装箱:解析为 Integer num = new Integer(10);
自动拆箱:故名思议就是将对象重新转化为基本数据类型:
//装箱 Integer num = 10; //拆箱 int num1 = num;
Integer num1 = 297; Integer num2 = 297; System.out.println("num1==num2: "+(num1==num2)); // 在-128~127 之内的数 Integer num3 = 97; Integer num4 = 97; System.out.println("num3==num4: "+(num3==num4));
打印的结果是:num1==num2: false num3==num4: true
java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式(flyweight)
为了加大对简单数字的重利用,java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象
而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象;
以上的现象是由于使用了自动装箱所引起的,如果你没有使用自动装箱,而是跟一般类一样,用new来进行实例化,就会每次new就都一个新的对象;
这个的自动装箱拆箱不仅在基本数据类型中有应用,在String类中也有应用,比如我们经常声明一个String对象时:
String str = "sl"; //代替下面的声明方式 String str = new String("sl");