Java包装类之自动装箱与拆箱

 更新时间:2021年09月14日 10:19:16   投稿:jbzj  
这篇文章主要介绍了Java包装类之自动装箱与拆箱,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

JDK 5.0之前

基本数据类型<---->包装类:调用包装类的构造器(代码里有知识点和注意点)

转换目的:有了类的特点,就可以调用类中的方法

public class WrapperTest {
	// 基本数据类型--->包装类:调用包装类的构造器
	@Test
	public void test1() {
		int num1 = 10;
		Integer in1 = new Integer(num1);
		System.out.println(in1.toString());//10
		Integer in2 = new Integer("123");
		System.out.println(in2.toString());//123
		// 报异常:NumberFormatException
		Integer in3 = new Integer("123abc");//调用Integer必须全是数字
		System.out.println(in3.toString());
		//有点特殊:因为底层源码 return ((s != null) && s.equalsIgnoreCase("true"));
		Boolean b1 = new Boolean(true);
		Boolean b2 = new Boolean("True");//true
		System.out.println(b2);
		Boolean b3 = new Boolean("true123");//flase
		Order order = new Order();
		System.out.println(order.isMale);//false//因为基本数据类型的默认初始化值为:false
		System.out.println(order.isFamale);//null//此时为引用数据类型(类),默认初始化值:null
	}
}
class Order {
	boolean isMale;
	Boolean isFamale;
}

包装类--->基本数据类型:调用包装类的xxxValue()
转换目的:就可以进行加减乘除的运算

public class WrapperTest {
	@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
	}
}

JDK5.0之后

自动装箱:本质是替换之前的调用包装类的构造器

自动拆箱:本质是替换之前的调用包装类的xxxValue()

public class WrapperTest {
	@Test
	public void test3() {
		//自动装箱
		int num2 = 10;
		Integer in1 = num2;
		boolean b1 = true;
		Boolean b2 = b1;
		//自动拆箱
		System.out.println(in1.toString());
		int num3 = in1;
	}
}

基本数据类型、包装类---->String类型:调用String重载的valueOf(Xxx xxx)

public class WrapperTest {
	@Test
	public void test4() {
		//方式一:连接运算
		int num1 = 10;
		String str1 = num1 + "";
		//方式二:调用String的valueOf(Xxx xxx)
		float f1 = 12.3f;
		String str2 = String.valueOf(f1);
		Double d1 = new Double(12.4);
		String str3 = String.valueOf(d1);
		System.out.println(str2);//"12.3"
		System.out.println(str3);//"12.4"	
	}
}

注意点:“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用"+"运算符连接字符串和int型(或double型)数据时,“+”将int(或double)型数据自动转成String类型。

String--->基本数据类型、包装类:调用包装类的parseXxx(String s)

public class WrapperTest {
	@Test
	public void test5() {
		String str1 = "123";
		int num2 = Integer.parseInt(str1);//若为"123a",则会报NumberFormatException
		System.out.println(num2 + 1);
		String str2 = "true";
		boolean b1 = Boolean.parseBoolean(str2);//非true,即flase
		System.out.println(b1);
	}

注意:转换时,可能会报NumberFormatException

到此这篇关于Java包装类之自动装箱与拆箱的文章就介绍到这了,更多相关Java 装箱 拆箱内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文详解Java中的AuthRequest类(附Demo)

    一文详解Java中的AuthRequest类(附Demo)

    公共接口,定义了对第三方平台进行授权、登录、撤销授权和刷新 token 的操作,本文将详细分析Java中的AuthRequest类(附Demo),文中通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-04-04
  • idea如何为java程序添加启动参数

    idea如何为java程序添加启动参数

    文章介绍了如何在Java程序中添加启动参数,包括program arguments、VM arguments和Environment variables,并解释了如何在代码中使用System类获取这些参数
    2025-01-01
  • springcloud使用consul作为配置中心

    springcloud使用consul作为配置中心

    这篇文章主要介绍了springcloud使用consul作为配置中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java中的2种集合排序方法介绍

    Java中的2种集合排序方法介绍

    这篇文章主要介绍了Java中的2种集合排序方法介绍,本文直接给出代码,相关说明请看代码中的注释,需要的朋友可以参考下
    2014-10-10
  • RestTemplate发送请求时Cookie的影响及注意事项说明

    RestTemplate发送请求时Cookie的影响及注意事项说明

    这篇文章主要介绍了RestTemplate发送请求时Cookie的影响及注意事项说明,具有很好的参考价值,希望对大家有所帮助。
    2023-07-07
  • Spring Profile与PropertyPlaceholderConfigurer项目多环境配置切换

    Spring Profile与PropertyPlaceholderConfigurer项目多环境配置切换

    这篇文章主要介绍了Spring Profile与PropertyPlaceholderConfigurer项目多环境配置切换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • java返回前端树形结构数据的2种实现方式

    java返回前端树形结构数据的2种实现方式

    近期项目有个需求,需要将组织机构数据拼成树型结构返回至前端,下面这篇文章主要给大家介绍了关于java返回前端树形结构数据的2种实现方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • JAVA根据ip地址获取归属地的实现方法

    JAVA根据ip地址获取归属地的实现方法

    本文主要介绍了JAVA根据ip地址获取归属地的实现方法,要通过Java程序获取IP地址对应的城市,需要借助第三方的IP地址库,下面就来介绍一下,感兴趣的可以了解一下
    2023-10-10
  • Java中的ScheduledThreadPoolExecutor定时任务详解

    Java中的ScheduledThreadPoolExecutor定时任务详解

    这篇文章主要介绍了Java中的ScheduledThreadPoolExecutor详解,  ScheduledThreadPoolExecutor 继承自 ThreadPoolExecutor,它主要用来在给定的延迟之后运行任务,或者定期执行任务,ScheduledThreadPoolExecutor 的功能与 Timer 类似<BR>,需要的朋友可以参考下
    2023-12-12
  • Java中HashMap和Hashtable及HashSet的区别

    Java中HashMap和Hashtable及HashSet的区别

    以下是对Java中HashMap和Hashtable及HashSet的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09

最新评论