一、Java 中的包装类

1、在Java中,很多类的方法都需要接收引用类型的对象,此时就无法将一个基本数据类型的值传入,又如,基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性,JDK中提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的对象(装箱),同样,引用数据类型的对象变成基本数据类型的值叫做(拆箱)将在Java中,每种基本类型都有对应的包装类。这样我们就可以像操作对象那样来操作基本数据类型。 包装类如下:

注意:所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

byte

Byte

long

Long

char

Character

float  

Float  

int

Integer

double

Double

short   

Short

boolean

Boolean

2、装箱:以Integer为例:

Integer(int value) :           创建一个Integer对象,表示int的值
Integer(String s) :           创建一个Integer对象,表示String参数所指示的int值
Integer a1=new Integer(22);//装箱,创建Integer包装类对象,表示变量a的值
Integer b1=new Integer("22");//装箱,创建Integer包装类对象,值为22

3、拆箱:以Integer为例:xxxValue()将Integer包装类转换为xxx类型

int a2=a1.intValue();// 拆箱,将Integer包装类转换为int类型

4、自动装箱:(5.0之后,操作更方便)

double a = 22.2;
Double b = new Double(a);   // 手动装箱   
Double c = a;    // 自动装箱

5、自动拆箱:

Double d = new Double(22.2);
double e = d.doubleValue();// 手动拆箱              ;
double f =d;// 自动拆箱

6、自动装拆箱实例:

public class Test{
 
   public static void main(String args[]){
      Integer x = 5;
      x =  x + 10;
      System.out.println(x); 
   }
}
//结果:15

当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。

7、包装类的常用方法,以Integer包装类为例:

返回值

方法名

解释

byte

byteValue()

将Integer转换成byte类型

int

intValue()

将Integer转换成int类型

double

doubleValue()

将Integer转换成double类型

float

floatValue()

将Integer转换成float类型

long

longValue()

将Integer转换成long类型

static int

parseInt(String s)

将Integer转换成int类型

static Integer

valueOf(String S)

将字符串转换成指定String值的Integer对象

static Integer

valueOf(int i)

将int型值转换成指定int值的Integer实例

String

toString()

转换成字符串类型

String

toBinaryString(int i)

以二进制无符号整数的形式返回一个整数参数的字符串

String

toHexString(int i)

以十六进制无符号整数形式返回一个整数参数的字符串

String

toOctalString(int i)

以八进制无符号整数形式返回一个整数参数的字符串

综合实例:

public class Boxample {
	public static void main(String[] args){		
		Integer a1=new Integer(22);//装箱,创建Integer包装类对象,表示变量a的值
		Integer a2=new Integer("22");//装箱,创建Integer包装类对象,值为22
		Integer b1=Integer.valueOf(24); //装箱,创建Integer包装类对象,值为24
		Integer b2=Integer.valueOf("24"); //装箱,创建Integer包装类对象,值为24
		Double d=Double.valueOf("26"); //装箱,创建Double包装类对象,值为26

		int c=a1.intValue();// 拆箱,将Integer包装类转换为int类型
		
		double c1=a1.doubleValue();// 将Integer包装类转换为double类型
		float c2=a1.floatValue();// 将Integer包装类转换为float类型
		String c3=a1.toString();//将Integer的值以字符串的形式打印出来
		
		System.out.println("Integer(22)包装类:" +a1);
		System.out.println("Integer(\"22\")包装类:" +a2);
		System.out.println("valueOf(24)包装:" +b1);
		System.out.println("valueOf(\"24\")包装:" +b2);
		System.out.println("valueOf(\"26\")包装,Double:" +d+"\n");
	
		System.out.println("int类型:" + c);
		System.out.println("double类型:" + c1);
		System.out.println("float类型:" + c2+"\n");
		System.out.println("toString()将Integer的值以字符串的形式打印出来:" + c3);
	}

}
/*结果:
Integer(22)包装类:22
Integer("22")包装类:22
valueOf(24)包装:24
valueOf("24")包装:24
valueOf("26")包装,Double:26.0

int类型:22
double类型:22.0
float类型:22.0

toString()将Integer的值以字符串的形式打印出来:22
*/


、Java中基本类型和字符串之间的转换

基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

double m = 78.5;
String str1 = Double.toString(m);
String str2 = String.valueOf(m);
String str3 = m +" ";

将字符串转换成基本类型有两种方法:

1. 调用包装类的 parseXxx 静态方法,Xxx 可以是

2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱,除了Character外,包装类都有valueOf(String)方法

String str = "180.20";
double a1 =  new Double(str);
double a2 =  Double.valueOf(str);
double a3 =  Double.parseDouble(str);

综合实例如下:

public class Integerlei{
	    public static void main(String[] args) {
	        
	        String n="100";
	        System.out.println("String型n与整数20的求和结果为: "+(n+20)+"\n");
	        
	        //将基本类型转换为字符串
	        System.out.println("将基本类型转换为字符串----------");
			double m = 78.5;
			String str1 = Double.toString(m);
			String str2 = String.valueOf(m);
			String str3 = m +" ";
			
			System.out.println("toString() 方法 "+(str1+20));//相当于两个字符串相连接
			System.out.println("valueOf() 方法: "+(str2));
			System.out.println("空字符串加上基本类型方法:"+(str3)+"\n");

	        // 将字符串转换为基本类型
	        System.out.println("将字符串转换为基本类型----------");
			String str = "180.20";
			double a1 =  new Double(str);
			double a2 =  Double.valueOf(str);
			double a3 =  Double.parseDouble(str);
			
			System.out.println("自动拆箱方法: "+(a2));
			System.out.println("valueOf() 方法: "+(a2));
			System.out.println("parseDouble() 方法: "+(a3));
			System.out.println("str 转换为double型后与整数20的求和结果为: "+(a2+20));
		}
	}
/*结果:
String型n与整数20的求和结果为: 10020

将基本类型转换为字符串----------
toString() 方法 78.520
valueOf() 方法: 78.5
空字符串加上基本类型方法:78.5 

将字符串转换为基本类型----------
自动拆箱方法: 180.2
valueOf() 方法: 180.2
parseDouble() 方法: 180.2
str 转换为double型后与整数20的求和结果为: 200.2

*/