java装箱和拆箱,基本数据类型和包装数据类

本文详细介绍了Java中的八种基础数据类型,包括四种整数型(byte、short、int、long)、两种浮点型(float、double)、字符型(char)和布尔型(boolean)。探讨了每种类型的数据范围、默认值及应用场景,同时对比了基本类型与包装类型的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型

首先知道java中的基础数据类型,Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型,包括:byte,short,int,float,long,double,boolean,char
其中:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:

byte 数据类型是8位、有符号的,以二进制补码表示的 ** 整数 **;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
例子:byte a = 100,byte b = -50。

short:

short 数据类型是 16 位、有符号的以二进制补码表示的 **整数**
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是 0;
例子:short s = 1000,short r = -20000。
注意前面两个基本类型都是可以节省整数存储空间的

int:

int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子:int a = 100000, int b = -200000。

long:

long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子: long a = 100000L,Long b = -200000L。
"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

float:

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。
注意float和long都显示有标注符L和f

double:

double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double类型同样不能表示精确的值,如货币;
默认值是 0.0d;
例子:double d1 = 123.4。

boolean:

boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。

char:

char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符;
例子:char letter = 'A';。

包装类型

对应的包装类型:Byte,Short,Integer,Long,Float,Double,Boolean,Character,

两种类型区别:

为甚有基本类型:Java编程思想是万物皆对象,我们new一个对象是通过堆栈的引用来使用这些对象,对于经常用到的int,float,double等变量,如果用new来申请,就会将他们存入一个堆中,这样做法就不是很高效。所以就出现了基本类型,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效。

包装类型:但Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。参考

拆箱和装箱

装箱:基本类型转变为包装器类型的过程。
拆箱:包装器类型转变为基本类型的过程。

//装箱
Integer i = new Integer(10);//JDK1.5之前是不支持自动装箱和自动拆箱的,必须这样定义
Integer i = 10;//JDK1.5开始,提供了自动装箱的功能。装箱是通过调用包装器类的 valueOf 方法实现的,也就是代码也可以写为(Integer i=Integer.valueOf(10);)


//拆箱
int n = i;//拆箱是通过调用包装器类的 xxxValue 方法实现的,这里也就是也可以写为(int n=i.intValue())

包装类型和基本类型的==操作和equal()操作参见

Integer i3 = 200;
Integer i4 = 200;
System.out.println(i3==i4); //打印false

注意jvm在运行时创建了一个缓存区域,并创建了一个integer的数组。这个数组存储了-128至127的值。因此如果integer的值在-128至127之间,则是去缓存里面获取。因此上面的i3和i4指向的是同一个内存地址。而200超过了这个缓存区域,因此这样赋值的时候是重新开辟了两个内存地址,所以内存地址不再相同,所以不等。

== 的作用:

基本类型:比较值是否相等
引用类型:比较内存地址值是否相等

equals 的作用:

引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值