Java 基础(包装类 Wrapper 的使用)

针对八种基本数据类型定义相应的引用类型--包装类(封装类)
有了类的特点,就可以调用类中的方法,Java才是真正的面向对象

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Byte, Short, Integer, Long, Float, Double 父类是 Number

基本数据类型包装成包装类的实例 ---装箱

  • 通过包装类的构造器实现:
int i = 500; Integer t = new Integer(i);
  • 还可以通过字符串参数构造包装类对象:
Float f = new Float("4.56");
Long l = new Long("asdf"); //NumberFormatException

获得包装类对象中包装的基本类型变量 ---拆箱

  • 调用包装类的 .xxxValue() 方法:
    boolean b = bObj.booleanValue();

JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。

基本类型,包装类与 String 类间的转换

举例

WrapperTest.java

package com.klvchen.java2;

import org.junit.jupiter.api.Test;

public class WrapperTest {
	
	//String 类型 ---> 基本数据类型,包装类
	@Test
	public void test5() {
		String str1 = "123";
		//错误情况
//		int num1 = (int)str1;
//		Integer in1 = (Integer)str1;
		
		//可能会报 NumberFormatException
		int num2 = Integer.parseInt(str1);
		System.out.println(num2 + 1);  //124
		
		String str2 = "true1";
		boolean b1 = Boolean.parseBoolean(str2);
		System.out.println(b1);        //false
	}
	
	
	//基本数据类型,包装类 ---> String 类型
	@Test
	public void test4() {
		
		int num1 = 10;
		//方式1: 连接运算
		String str1 = num1 + "";
		//方式2: 调用 String 的 valueOf(XXX xxx)
		float f1 = 12.3f;
		String str2 = String.valueOf(f1);
		System.out.println(str2);     //12.3
		
		Double d1 = new Double(12.4);
		String str3 = String.valueOf(d1);
		System.out.println(str3);     //12.4
		
		
	}
	
	
	
	//基本数据类型 ---> 包装类的对象(JDK 5.0 的特性,自动装箱与自动拆箱)
	@Test
	public void test3() {
//		int num1 = 10;
//		method(num1);
		
		//自动装箱:基本数据类型 ---> 包装类
		int num2 = 10;
		Integer in1 = num2; //自动装箱
		
		boolean b1 = true;
		Boolean b2 = b1;    //自动装箱
		
		//自动拆箱: 包装类 ---> 基本数据类型
		System.out.println(in1.toString());  //10
		
		int num3 = in1;  //自动拆箱
	}
	
	public void method(Object obj) {
		System.out.println(obj);
	}
	
	//包装类 ---> 基本数据类型:调用包装类的 xxxValue()
	@Test
	public void test2() {
		Integer in1 = new Integer(12);
		
		int i1 = in1.intValue();
		System.out.println(i1 + 1);  //13
		
		Float f1 = new Float(12.3);
		float f2 = f1.floatValue();
		System.out.println(f2 + 1);  //13.3
		
	
				
	}
	
	//基本数据类型 ---> 包装类
	@Test
	public void test1() {
		
		int num1 = 10;
//		System.out.println(num1.toString()); //基本数据类型,无法调用方法
		Integer in1 = new Integer(num1);
		System.out.println(in1.toString());  //10
		
		Integer in2 = new Integer("123");
		System.out.println(in2.toString());  //123
		
		//报异常 java.lang.NumberFormatException
//		Integer in3 = new Integer("123abc");
//		System.out.println(in3.toString());
		
		Float f1 = new Float(12.3f);  
		Float f2 = new Float("12.3"); 
		System.out.println(f1);    //12.3
		System.out.println(f2);    //12.3
		
		Boolean b1 = new Boolean(true);
		Boolean b2 = new Boolean("true");
		System.out.println(b1);    //true
		System.out.println(b2);    //true
		
		Boolean b3 = new Boolean("true123");
		System.out.println(b3);   //false
		
		Order order = new Order();
		System.out.println(order.isMale);  //false
		System.out.println(order.isFemale);  //null
		
	}

}

class Order{
	
	boolean isMale;
	Boolean isFemale;
}

总结

基本数据类型 ---> 包装类
自动装箱:

eg: int num2 = 10;
    Integer in1 = num2;

包装类 ---> 基本数据类型
自动拆箱:

eg: Integer in1 = new Integer(12);
    int num2 = in1;

基本数据类型,包装类 ---> String 类型
调用 String 的 valueOf(XXX xxx)

eg: float f1 = 12.3f;
    String str2 = String.valueOf(f1);

String 类型 ---> 基本数据类型,包装类
调用对应方法的包装类的 parseXxx(Sting)

eg: String str1 = "123";
    int num2 = Integer.parseInt(str1);
posted @ 2021-02-27 15:27  klvchen  阅读(600)  评论(0编辑  收藏  举报