java中的装箱和拆箱
1. 什么是装箱和拆箱
Java中的数据类型项由8大基本数据类型和引用数据类型,其中基本数据类型存储在栈中,而引用类型的数据则在栈中存储了一个地址,引用类型的数据则存储在堆中;(这里需要注意的是这里的堆和数据结构中的堆没有任何关系,我们可以把堆看作是一个池)
而所谓装箱就是把基本数据类型存储在堆中,所以要把他变成引用类型;反过来所谓拆箱,就是把引用类型中的数据放到栈中,要把它变成基本数据类型。
Java中给我们提供很多的包装类,可以参考帮助文档学习:
java JdkAPI下载
小案例:
package com.iobox.dem01;
public class Test {
public static void main(String[] args) {
//基本类型;
int num1=18;
//装箱,基本数据类型转换为引用数据类型。
//使用Integer类创建对象
System.out.println("装箱:");
Integer integer1=new Integer(num1);
Integer integer2=Integer.valueOf(num1);
System.out.println(integer1);
System.out.println(integer2);
//类型转换,拆箱:引用类型转换为基本类型
System.out.println("拆箱:");
Integer integer4=new Integer(100);
int num2=integer4.intValue();
System.out.println(num2);
//jdk1.5之后,自动提供装箱和拆箱
int num3=120;
//自动装箱
Integer interger5=num3;
System.out.println("自动装箱:"+interger5);
System.out.println(interger5.getClass());
//自动拆箱
int num4=interger5;
System.out.println("自动拆箱:"+num4);
}
}
2. 基本数据类型和字符串之间的转换
- 基本数据类型转化为string数据类型,可以使用 + 号;也可以使用Integer类中的toString()方法;
- 字符串型转换为基本数据类型,使用Integer.parsXXX()
- boolean字符串形式转成基本数据类型,即"true"—>true ,其中只要是 非"true"那就转化false;
案例:
package com.iobox.dem01;
public class Test01 {
public static void main(String[] args) {
//1基本数据类型转换为string数据类型
int num1=124;
//1.1使用+号
String s1=num1+"";
System.out.println(s1);
//1.2使用Integer类中的toString()方法
String s2=Integer.toString(num1,16);//16表示16进制
System.out.println(s2);
//2.字符串转成基本数据类型
String str="150";
//使用Integer.parsXXX()
int n1=Integer.parseInt(str);
System.out.println(n1);
//boolean字符串形式转成基本数据类型,"true"--->true || 非"true"-->false
String str2="true";
boolean b1= Boolean.parseBoolean(str2);
System.out.println(b1);
}
}