Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

        包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:

                                       包装类对应表


基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double


在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。

其中除了Character与Boolean的父类是Object之外,其余的都是继承自:java.lang.Number

JAVA基本数据类型 byte Java基本数据类型和包装类_基本数据类型

8种基本数据类型

 Java语言有8种基本数据类型, 分别用于存储整数、浮点数、字符数据和布尔类型数据。需要注意的是: 现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型。基本数据类型如图 – 1所示:


JAVA基本数据类型 byte Java基本数据类型和包装类_包装类_02


从图- 1中可以看出, 基本数据类型主要分为4大类 (整数类型、浮点类型、char、boolean), 整数类型又分为了4小类(byte、short、int、long), 浮点类型也分了2小类(float、double),这些数据类型的区别是怎样的?通过图– 2展示了这8种数据类型的存储空间及使用场景:



        

JAVA基本数据类型 byte Java基本数据类型和包装类_JAVA基本数据类型 byte_03



在如上这8种数据类型中,最常用的有5种,分别为int、long、double、char、boolean。其余的数据类型几乎不用,要求对这5种基本数据类型重点掌握,其余的数据类型,有兴趣了解就可以了。



基本类型(primitive type)
不用new来创建变量,而是创建一个并非是“引用”的“自动”变量。这个变量拥有它的“值”,并置于堆栈中,因此更加高效。要确定每种基本类型所占存储空间的大小。

JAVA基本数据类型 byte Java基本数据类型和包装类_基本数据类型_04

Java整型

int

4字节(32位)

-2147483648 ~ 2147483647   (正好超过20亿)

short

2字节(16位)

-32768 ~ 32767

long

8字节(64位)

-9223372036854775808 ~ 9223372036854774807

byte

1字节(8位)

-128 ~ 127


 浮点类型


float

4字节(32位)

大约±3.40282347E+38F (有效位数为6-7位)

double

8字节(64位)

大约±1.79769313486231570E+308 (有效位数为15位)



转换关系:


基本类型------>包装器类


Integer obj=new Integer(145);


包装器类------>基本类型


int num=obj.intValue();


字符串------>包装器类


Integer obj=new Integer("-45.36");


包装器类------>字符串包装器类

String str=obj.toString();


字符串------>基本类型


int num=Integer.parseInt("-45.36");


基本类型------>字符串包装器类

String str=String.valueOf(5);

在一定的场合,运用java包装类来解决问题,能大大提高编程效率.

JDK1.5的新特性:自动装包/拆包(Autoboxing/unboxing)

自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

自动装包:基本类型自动转为包装类.(int >> Integer)

自动拆包:包装类自动转为基本类型.(Integer >> int)

在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制


解决了我们的问题。



int a = 3;
  
Collection c = new ArrayList();
  
c.add(a);//自动转换成Integer.
    
Integer b = new Integer(2);
  
c.add(b + 2);


这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.