java 自动拆箱与装箱(基本数据类型与引用类型)

(本文章不为原创文章,摘抄,忘记了出处,抱歉)

1.Java数据类型

在介绍java的自动装箱和拆箱之前,我们先来了解一下Java的基本数据类型。

在Java中,数据类型可以分为两大种,Primitive Type(基本类型)和Reference Type(引用类型)。基本类型的数值不是对象,不能调用对象的toString()、  hashCode()、getClass()、equals()等方法。所以Java提供了针对每种基本类型的包装类型。如下:

   

INDEX 基本类型 大小 数值范围 默认值 包装类型
1 boolean --- true,false false Boolean
2 byte 8bit -2^7 -- 2^7-1 0 Byte
3 char 16bit \u0000 - \uffff \u0000 Character
4 short 16bit -2^15 -- 2^15-1 0 Short
5 int 32bit -2^31 -- 2^31-1 0 Integer
6 long 64bit -2^63 -- 2^63-1 0 Long
7 float 32bit IEEE 754 0.0f Float
8 double 64bit IEEE 754 0.0d Double
9 void --- --- --- Void

2.Java自动装箱和拆箱定义

java1.5中引入了自动装箱和拆箱机制:

(1)自动装箱:把基本类型用它们对应的引用类型包装起来,使它们具有对象的特质,可以调用toString()、hashCode()、getClass()、equals()等方法。

如下:

Integer a=3;//这是自动装箱

其实编译器调用的是static Integer valueOf(int i)这个方法,valueOf(int i)返回一个表示指定int值的Integer对象,那么就变成这样:

Integer a=3;   =>    Integer a=Integer.valueOf(3);

(2)拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。

如下:

int i = new Integer(2);//这是拆箱

时间: 2024-10-23 07:38:53

java 自动拆箱与装箱(基本数据类型与引用类型)的相关文章

java自动拆箱装箱易导致的两个错误

自J2SE 5.0开始提供的基本数据类型的自动装箱(autoboxing).拆箱(unboxing)功能. 何为自动装箱: 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; ) 实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = new Integer(100); 此即基本数据类型的自动装箱功能. 何为自动拆箱 自动拆箱(unboxing),也就是将对象中的基本数据从对象中自动取出.如下可实现自动拆箱

java 自动拆箱的陷阱

java  自动拆箱运用非常广泛.但是这里面有一些"陷阱".废话不多说,来看一段代码: public static void main(String[] args) { Integer a=1; Integer b=2; Integer c=3; Integer d=3; System.out.println(c==(a+b)); System.out.println(c==d); System.out.println(c.equals(d)); Integer f=200; Inte

Java的自动拆箱和装箱

Java 1.5中引入了自动装箱和拆箱机制 自动装箱:(看代码) <span style="font-family:SimSun;font-size:18px;color:#000000;">//自动装箱:把基本类型用它们所对应的引用类型包装起来,使它们具有对象的属性 Integer integer_a = 8; </span> 自动拆箱:(看代码) <span style="font-family:SimSun;font-size:18px;c

java 1.5 自动拆箱和装箱的注意事项

背景 java1.5后引入了自动装箱和自动拆箱的概念 自动拆箱:将引用类型转化为基本数据类型 自动装箱:将基本数据类型装为引用类型 但是实际使用中,什么情况自动拆箱什么情况自动装箱呢? 自动装箱 Integer i = 100; (调用Integer.valueOf(100)) 这里存在一个缓存变量 -128~127 ,如果基本数据类型在此范围内,则使用缓存的对象,否则new Integer(number) 自动拆箱 //第一种情况 Integer i = 100; int x = i; (调用

关于Java自动拆箱装箱中的缓存问题

1 package cn.zhang.test; 2 /** 3 * 测试自动装箱拆箱 4 * 自动装箱:基本类型自动转为包装类对象 5 * 自动拆箱:包装类对象自动转化为基本数据类型 6 * 7 * 8 * /*缓存问题*/ 9 /*缓存[-128,127]之间的数字,也就是一个byte,实际上是系统在初始的时候创建了一个范围在[-128,127]之间的一个数组 10 * 当我们调用valueOf的时候,首先判断该数字是否在[-128,127]之间,如果在,则在数组中拿出该对象,侧面印证了数组

自动拆箱,装箱?

自动装箱和自动拆箱是简化了基本数据类型和相对应对象的转化步骤(由java编译器处理) 例:Integer  a=1;//这就是一个自动装箱,如果没有自动装箱的话,需要这样Integer  a=new Integer(1)   int b=a;//这就是一个自动拆箱,如果没有自动拆箱的话,需要这样:int b=a.intValue()

11、自动拆箱和装箱

什么是自动拆箱和自动装箱? //自动装箱:把基本类型转换为包装类类型 Integer s1 = 123; //自动拆箱:把包装类类型转换为基本类型 Integer s2 = new Integer(10); int i2 = s2; 以上特性是jdk5中加入的,也就是说在jdk5版本之前是不支持自动装箱和自动拆箱的. 注意:在判断两个Integer类型是否相等时,要使用equals方法,不能使用"==",Integer已经重写了Object中的equals方法. Integer s2

Java 自动拆箱

public static void main(String[] args) { UnBoxing(); } public static Long getLong(){ Long a=null; return a; } public static void UnBoxing(){ // 自动拆箱,由于a为Null // 会调用Integer.intValue方法自动拆箱包装器类型为基本数据类型. long b=getLong();// 出现 NullPointerException System

java学习笔记——自动拆箱装箱(Autoboxing&amp;Unboxing)

一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类类型的对象却可以携带更多的信息. public class TestInteger01 { public static void main(String[] args) { int a = 10; int b = 20; Integer A = new Integer(a); Integer B =