Java的面向对象

14-包装类与自动装箱和自动拆箱

2021-07-06 592 1

简介 基本数据类型,不能创建对象, 有了包装类,真正实现了面向对象。

1. 包装类


我们知道,Java中的8种基本的数据类型跟Object类没有面向对象层面的关系,而Java又是面向对象的语言,让人感觉基本数据类型与Java语言“脱节”了。

于是乎,针对八种基本数据类型定义相应的引用类型—包装类(封装类),将基本数据类型封装到类中,希望基本的数据类型也有类的一些特征,真正的让Java语言实现纯面向对象的语言。有了类的特点以后,就可以调用类中的方法,真正地实现了面向对象


2. 基本数据类型转换为包装类

基本数据类型 ->包装类:调用包装类的构造器

//TestWrapper.java
package com.ylaihui.oop9;
import org.junit.Test;
public class TestWrapper {
    	@Test
    	public void test1(){
    		int num = 123;
		Integer i = new Integer(num);
		System.out.println(i.toString());
		
		Integer i2 = new Integer("123");
		System.out.println(i2.toString());
		
//		Integer i3 = new Integer("123a");
//		System.out.println(i3.toString());
		
		Boolean b1 = new Boolean("true11");
		System.out.println(b1);
	}
}


3. 包装类转换为基本数据类型

包装类->基本数据类型:调用包装类Xxx的xxxValue()

//TestWrapperToBase.java
package com.ylaihui.oop9;
import org.junit.Test;
public class TestWrapperToBase {
    	// 包装类->基本数据类型:调用包装类Xxx的xxxValue()
    	@Test
    	public void test1(){
    		Integer i1 = new Integer(12);
    		System.out.println(i1 + 1);
		
		int intv = i1.intValue();
		System.out.println(intv);
		
		Double d1 = new Double(12.33);
		System.out.println(d1);
		
		double dd = d1.doubleValue();
		System.out.println(dd);
		
		// ...
		
	}
}


4. 自动装箱和自动拆箱

JDK 5.0 新特性:自动装箱 与自动拆箱

//AutoBaseTrans.java
package com.ylaihui.oop9;

import org.junit.Test;

public class AutoBaseTrans {

    	@Test
    	public void test1(){
		// 自动装箱  基本数据类型自动转换为包装类
		int num1 = 12;
		Integer i1 = num1;
		
		double db = 12.33;
		Double d1 = db;
		
		// 自动拆箱  包装类自动转换为基本数据类型
		int num2 = i1;
		double db1 = d1;	
	}
}


5. 包装类(基本数据类型)到String的相互转换

upfile


基本数据类型、包装类->String类型:调用String重载的valueOf(Xxx xxx),记忆为格式化输出到特定格式的字符串。

String类型 --->基本数据类型、包装类:调用包装类的parseXxx(String s),记忆为字符串解析。

转换成谁,就调用谁的方法


//WrapperToString.java
package com.ylaihui.oop9;

import org.junit.Test;

public class WrapperToString {

    	// String类型 --->基本数据类型、包装类:调用包装类的parseXxx(String s)
    	@Test
     public void test2(){
		String st1 = "123";
		
		Integer i1 = Integer.parseInt(st1);
		System.out.println(i1);
		
		boolean b = Boolean.parseBoolean("true");
		System.out.println(b);
		
		double d1 = Double.parseDouble("12.3");
		System.out.println(d1);
	}
	
	//基本数据类型、包装类--->String类型:调用String重载的valueOf(Xxx xxx)
	@Test
	public void test1(){
		int num = 11;
		// 字符串连接符转换
		String str1 = num + "";
		
		// 调用String的valueOf(Xxx xxx)
		Integer i = new Integer(11);
		String str2 = String.valueOf(i);
		String str3 = String.valueOf(11);
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
	}
}


点赞 1

文章评论

欢迎您:

纸上得来终觉浅,绝知此事要躬行!

112 文章 58901 浏览 3 评论

联系我

  •   QQ:    361352119
  •  Email:  lisimmy@sina.com
  • 微信: