`
zuozhimin
  • 浏览: 5948 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

装箱和拆箱解析

阅读更多
    Java中,数据类型分为基本数据和类类型(引用数据类型),但是我们要注意的是基本数据类型的数据不是对象,没有方法可调用,类类型是对象,可以调用相应的方法,比如toString()、hashCode()、equals()等等方法。;可是我们能否将基本数据类型转换为类类型?请看下面这张表:
INDEX     基本数据类型      包装类(类类型)
1                 int                                Integer
2                 char                            Character
3                 float                             Float
4               double                          Double
5                   byte                          Byte
6                 short                          Short
7                 long                           Long
8                 boolean                    Boolean

   我们从上面的表格可看到,每个数据类型都对应有一个包装类,这样只要给出了一个相应数据类型,我们就能使用包装类来对数据进行转换,从而调用相应包装类的方法:这样一个过程就是装箱;如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。
   而拆箱就是与装箱相反,把包装类的对象重新转化为基本数据类型;
下面例子就是手动装箱过程:
public class Test1{
	public static void main (String[] agrs){
		int i=10;
		Integer j=new Integer(i); //手动装箱操作
                int k=j.intValue();//手动拆箱操作
		System.out.println(k*k);
	}
}

打印输出100
    但JDK1.5之后,就不需要手动装/拆箱,如下例子:
public class Test2{
	public static void main (String[] agrs){
		int i=10
		Integer j=i;
		int k=j;//自动调用intValue()方法
		System.out.println(++k);
	}
}

打印输出:11
在进行装/拆箱时候,下面一点大家需要注意:
字符串和相应基本数据类型的转换,特别注意String和int之间的转换;
public class test3{
	public static void main (String[] args){
		String str="1500";
		try{
		int i=Integer.parseInt(str);
		System.out.println(++i);
		}
		catch (Exception e){ 
			e.printStackTrace(); //打印异常信息
		}
	}
}

打印输出:1501
如果在上述方法中str="15er00";则在调用parseInt方法时候会抛出NumberFormatException异常
参数:s - 包含要解析的 int 表示形式的 String。
返回:用十进制参数表示的整数值。
抛出:NumberFormatException - 如果字符串不包含可解析的整数。
  总结在包装类中将String转换为包装类所对应的基本数据类型的方法如下,所有的方法都将抛出NumberFormatException异常,需要在调用时候使用try ..catch 进行捕获


   我们从上面的表格可看到,每个数据类型都对应有一个包装类,这样只要给出了一个相应数据类型,我们就能使用包装类来对数据进行转换,从而调用相应包装类的方法:这样一个过程就是装箱;如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。
   而拆箱就是与装箱相反,把包装类的对象重新转化为基本数据类型;

下面例子就是手动装箱过程:
public class Test1{
	public static void main (String[] agrs){
		int i=10;
		Integer j=new Integer(i); //手动装箱操作
                int k=j.intValue();//手动拆箱操作
		System.out.println(k*k);
	}
}


打印输出100
    但JDK1.5之后,就不需要手动装/拆箱,如下例子:
public class Test2{
	public static void main (String[] agrs){
		int i=10
		Integer j=i;
		int k=j;//自动调用intValue()方法
		System.out.println(++k);
	}
}

打印输出:11

在进行装/拆箱时候,下面一点大家需要注意:
字符串和相应基本数据类型的转换,特别注意String和int之间的转换;
public class test3{
	public static void main (String[] args){
		String str="1500";
		try{
		int i=Integer.parseInt(str);
		System.out.println(++i);
		}
		catch (Exception e){ 
			e.printStackTrace(); //打印异常信息
		}
	}
}

打印输出:1501
如果在上述方法中str="15er00";则在调用parseInt方法时候会抛出NumberFormatException异常
参数:s - 包含要解析的 int 表示形式的 String。
返回:用十进制参数表示的整数值。
抛出:NumberFormatException - 如果字符串不包含可解析的整数。
总结在包装类中将String转换为包装类所对应的基本数据类型的方法如下,所有的方法都将抛出NumberFormatException异常,需要在调用时候使用try ..catch 进行捕获[size=medium][/size]

分享到:
评论

相关推荐

    Java自动装箱与拆箱深度解析:原理、应用与性能考量

    在Java编程中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是两个非常核心的概念,它们允许基本数据类型和它们对应的包装类之间无缝转换。这种转换机制在Java 5中引入,极大地简化了代码编写,但同时也带来了一些...

    JAVA装箱拆箱(很详细、易于理解)

    Java中的装箱和拆箱是面向对象编程中的一个重要概念,主要涉及到Java的自动类型转换机制。装箱是指将基本数据类型(如int、char、boolean等)转换为对应的包装器类对象,而拆箱则是相反的过程,即把包装器类的对象...

    解析C#中的装箱与拆箱的详解

    在C#编程语言中,装箱和拆箱是两种关键的概念,它们涉及到值类型(如int、bool、struct等)与引用类型(如object、接口)之间的转换。本文将深入探讨这两个概念,以及它们在内存管理和性能优化中的影响。 首先,...

    JavaScript装箱及拆箱boxing及unBoxing用法解析

    在JavaScript中,装箱(boxing)和拆箱(unboxing)是两个重要的概念,它们涉及到基本数据类型和引用数据类型之间的转换。基本数据类型包括Number、String、Boolean、null、undefined,而引用数据类型主要是Object,...

    《深入理解java虚拟机》自动装箱拆箱实例.doc

    在给定的代码片段中,作者通过几个具体的例子来展示自动装箱和拆箱的应用以及它们对对象比较的影响。 #### 示例1: `System.out.println(c==d); // true` 在这行代码中,`c` 和 `d` 都是 `Integer` 类型的对象,...

    java装拆箱.ppt

    Java装箱和拆箱是Java语言中的一种特性,主要用于基本数据类型(如int、char、boolean等)与它们对应的引用类型(如Integer、Character、Boolean等包装器类)之间的转换。这种转换在处理集合框架、泛型以及某些高级...

    Java拆箱与装箱实例详解

    Java中的拆箱(Unboxing)和装箱(Boxing)是自动类型转换的过程,涉及到基本类型(Primitive Types)与它们对应的引用类型(Wrapper Classes)之间的转换。这些转换在编程时可以提高代码的简洁性,但在处理大量数据...

    heap and stack

    在.NET中,值类型和引用类型之间可以通过装箱和拆箱进行相互转换。装箱是将值类型转换为引用类型的过程,通常涉及创建一个新的对象实例,并将值类型的数据复制到该对象中;而拆箱则是相反的过程,将引用类型的对象...

    java面试题大全整理版.docx

    "Java面试题大全整理版" ...本文档还包括了六个Java面试题的解析,涵盖了面向对象特征、访问修饰符、基本数据类型、自动装箱/拆箱机制等多个方面。这些问题涵盖了Java的基本概念和常见的编程技术。

    Java JDK 5.0学习笔记

    3. **自动装箱与拆箱(Autoboxing/Unboxing)**:Java 5.0引入了自动装箱和拆箱机制,使得基础数据类型和对应的包装类之间可以无缝转换。例如,一个整数可以直接赋值给Integer对象,反之亦然,这简化了代码并减少了...

    scjp5拖拉题准确答案与解析

    - **解析**:自动装箱是将基本类型转换为其对应的包装类的过程,而自动拆箱则是相反的过程。Java 5开始支持自动装箱/拆箱,这使得编写代码更加简洁。 通过以上对SCJP5拖拉题的解析,我们可以看出这种题型不仅要求...

    jdk1.5.0_12源代码

    在这个版本中,Java语言进行了重要的更新,包括泛型、枚举、自动装箱/拆箱、变长参数等,极大地提升了开发效率和代码的可读性。接下来,我们将详细探讨这些核心变化以及JDK源代码中的实现细节。 1. **泛型...

    Net面向对象程序设计枚举集合PPT教案学习.pptx

    相比之下,泛型接口提供了类型安全和更高的性能,因为它可以直接操作特定类型的元素,避免了装箱和拆箱的开销。 枚举数类通常定义为包含它的类的嵌套类,其内部实现可能依赖于不同的策略,如使用对象引用或索引来...

    C# 数据类型和转换

    - C# 4.0引入了编译器优化,对值类型的小整数(int、short、byte等)和bool进行自动装箱和拆箱操作,提高了性能。 6. 类型检查与类型转换异常 - 如果转换不成功,如试图将字符串转换为整数但无法解析,会导致...

    java jdk 1.5 API html

    在Java 1.5之前,需要手动进行装箱和拆箱,而1.5之后,系统会自动进行这些转换,提高了代码的简洁性。 5. **变量args(Varargs)** 在方法声明中,可以使用`...`操作符创建可变参数列表,使得方法能够接受任意数量...

    J2SE 5.0专题 之 语言特性

    ### J2SE 5.0 之 语言特性详解 #### 1.1 背景 随着 J2SE 5.0 的正式发布,Java 社区迎来了一个全新...通过对泛型、增强的 for 循环、自动装箱和拆箱等特性的学习和实践,开发者可以编写出更加高效和健壮的应用程序。

    Java五道输出易错题解析(进来挑战下).pdf

    Java编程语言中包含...对于Java程序员来说,熟悉Unicode字符、类加载机制、装箱拆箱以及异常处理等概念至关重要。在实际开发中,时刻保持警惕,对代码进行详尽的测试和审查,能够帮助我们写出更加健壮和可靠的程序。

    《C#中的类型转换》

    首先,装箱和拆箱是C#中用于在值类型和引用类型之间转换的过程。装箱是将值类型(如int、char等)转换为对应的引用类型(如Int32、Char等),而拆箱则是相反的过程。C#会自动进行这两种操作,但理解其背后的机制有助...

Global site tag (gtag.js) - Google Analytics