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 装箱 拆箱内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java--装箱和拆箱详解

    目录 装箱 拆箱 == null 总结 装箱 八大基本类型都有一个与之对应的类: 基本类型 类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 除了后两个Character和Boolean类是Object派生类外,其余六个是继承自Number类. 这些类称为包装器(wrapper),一旦构造了对象包装器,就不允许更改包装器在其中的值同时,对象包

  • Java基础详解之包装类的装箱拆箱

    一.包装类 概念: Java提供了两个类型系统,基本数据类型和引用数据类型,使用基本数据类型在于效率,然而很多情况下回创建对象使用,因为对象能做更多的功能. 所以可以使用一个类,把基本数据类型包装起来,在类中定义一些方法,这就叫做包装类.我们可以用这种方法来操作这些数据类型 基本类型 对应包装类(位于java.lang中) byte Byte short Short int Integer long Long float Float double Double char Character bo

  • 深入理解Java中的装箱和拆箱

    前言 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 若有不正之处,请谅解和批评指正,不胜感激. 一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成一个数值为10的Integer对象,

  • Java拆箱与装箱实例详解

    本文实例讲述了Java拆箱与装箱.分享给大家供大家参考,具体如下: 在JAVA中,数据类型主要分为2大类,基本类型和引用类型. 基本类型 大小 boolean 可以是1bit,与JVM有关系 byte 1字节 = 8bit short 2字节 = 16bit char 2字节 = 16bit int 4字节 = 32bit float 4 字节 = 32bit double 8字节 = 64bit long 8 字节 = 64bit 在JAVA中基本类型都有包装类型与之对应. 基本类型 包装类型

  • 详解Java 自动装箱与自动拆箱

    包装器 有些时候,我们需要把类似于int,double这样的基本数据类型转成对象,于是设计者就给每一个基本数据类型都配置了一个对应的类,这些类被称为包装器. 包装器整体来说分为四大种: Number,Number类派生出了Integer,Double,Long,Float,Short,Byte这六个小类分别代表了int,double,long,float,short,byte这六种基本数据类型. Character,对应的基本数据类型是char. Void,对应的是关键字void,这个类我们会经

  • 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 Inte

  • 详解Java包装类及自动装箱拆箱

    Java包装类 基本类型 大小 包装器类型 boolean / Boolean char 16bit Boolean byte 8bit Byte short /16bit Short int 32bit Integer long 64bit Long float 32bit Float double 64bit Double void / Void Java 的包装类有两个主要的目的: Java包装类将基本数据类型的值"包装"到对象中,对基本数据类型的操作变为了对对象进行操作,从而使

  • 详解Java 自动装箱与拆箱的实现原理

    什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱.因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱.原始类型byte, short, char, int, long, float, double 和 boolean 对应的封装类为Byte, Short, Character, Integer, Long, Float, Dou

  • Java中自动装箱、拆箱引起的耗时详解

    什么是自动装箱,拆箱 先抛出定义,Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂 耗时问题 在说 Java 的自动装箱和自动拆箱之前,我们先看一个例子. 这个错误我在项目中犯过(尴尬),拿出来共勉! private static long getCounterResult() { Long sum = 0L; final int length = Integer.MAX_VALUE; f

  • 浅谈Java自动装箱与拆箱及其陷阱

    在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有一个陷阱.开发者如果不注意,就会很容易跌入这个陷阱. 自动装箱(Autoboxing) 定义 大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象: Integer i=100; 从上面的代码中,大家可以得知,i为一个Integer类型的引用,100为Java中的基础数据类型(primitive data type).而这种直接将一个基

  • Java中的装箱和拆箱深入理解

    自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: 复制代码 代码如下: Intege

  • JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    目录 1正则表达式Regex 1.1概述 1.2常见语法 1.3String提供了支持正则表达式的方法 1.4练习:测试输入身份证号 2包装类 2.1与基本类型的对应关系 2.2Number 2.3Integer创建对象 2.4练习:Number之Integer 2.5Double 2.5练习:Number之Double 3自动装箱和自动拆箱 3.1概述 3.2练习:自动装箱与自动拆箱测试 4BigDecimal 4.1创建对象 4.2常用方法 4.3练习:测试常用方法 5拓展 总结 1 正则表

  • Java 装箱与拆箱详解及实例代码

    Java 装箱与拆箱详解 前言: 要理解装箱和拆箱的概念,就要理解Java数据类型 装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.int包装成Integer.float包装成Float 拆箱:和装箱相反,将引用类型的对象简化成值类型的数据 Integer a = 100; 这是自动装箱 (编译器调用的是static Integer valueOf(int i)) int b = new Integer(100); 这是自动拆箱 看下面一段代码 m1 public class

  • 轻松学习C#的装箱与拆箱

    首先看一看什么是装箱和拆箱?        简单的来说:        装箱就是值类型转换为引用类型:        拆箱就是引用类型转换为值类型.        值类型,包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.Char.Float.Double.Bool.Decimal).枚举 (enum) .结构 (struct).        引用类型包括类.数组.接口.委托.字符串等. 装箱:值类型到引用类型或到此值类型所实现的任何接口类型的

随机推荐