java__基本类型及自动拆箱装箱

java基本类型有八种,其中可以分为三种:

  1. 字符类型:char
  2. 布尔类型:boolean
  3. 整数类型:byte,short,int,long
  4. 浮点数:float,double

ps:java对于类型范围溢出没提示,而且string属于特殊字符串类型

类型 字节单位(1字节范围为2-7~(27-1))
boolean,byte 1
short,char 2
int,float 4
long,double 8

java自动装箱和拆箱

概述:把基本类型打包成包装类称为装箱(boxing),把包装类拆装成基本类型称为拆箱(unboxing)

包装类的作用:把基本类型打包成面向对象的类,因为某些类或方法等,不能使用基本类型只能使用对象,如集合类,所以在java中有一些方法可以把基本类型装箱。

java自动装箱方法:
// 直接声明包装类型
Integer i = 10;
// 使用包装方法
int i = 10;
Integer.value(i);
类型 包装类名
int Integer
char Charater
boolean Boolean
byte Byte
short Short
long Long
float Float
double Double
java自动拆箱方法:
//  使用包装类内自带的拆箱方法invalue();
Integer i = 10;
int b = Integer.invalue(i);
包装类缓存机制

当通过自动装箱机制创建包装类对象时,首先会判断数值是否在-128—-127的范围内,如果满足条件,则会从缓存(常量池)中寻找指定数值,若找到缓存,则不会新建对象,只是指向指定数值对应的包装类对象,否则,新建对象。用这种方法去降低内存使用率。

Integer a = 100;
Integer b = 100;
System.out.println(a==b); // true
System.out.prinln(a.equal(b)); // true

Integer a = 133;
Integer b = 133;
System.out.println(a==b); // false
System.out.prinln(a.equal(true)); // false

第一个a==b为true,因为数值没有超过127,所以a包装类创建后缓存了,b后创建于a一样的数值,所以b对象引用为a的对象
第二个a==b为false,数值超过127,所以并没有进行缓存,所以a==b为false
ps:包装类比较均使用equal()方法对比,不能使用==。否则只要不是缓存相同对象,无论数值是否相等,均为false。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容