java基本数据类型占用空间大小以及比较大小


一.Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变

基本类型 大小(字节) 默认值 封装类 取值范围
byte 1 (byte)0 Byte 最小值是 -128(-2^7)
最大值是 127(2^7-1)
short 2 (short)0 Short 最小值是 -32768(-2^15)
最大值是 32767(2^15 - 1)
int 4 0 Integer 最小值是 -2,147,483,648(-2^31)
最大值是 2,147,483,647(2^31 - 1)
long 8 0L Long 最小值是 -9,223,372,036,854,775,808(-2^63)
最大值是 9,223,372,036,854,775,807(2^63 -1)
float 4 0.0f Float 最小值是 1.4E-45 (2的-149次方)
最大值是 3.4028235E38 (2的128次方-1)
double 8 0.0d Double 最小值是 4.9E-324 (2的-1074次方)
最大值是 1.7976931348623157E308 (2的1024次方-1)
boolean - false Boolean true 和 false
char 2 \u0000(null) Character 最小值是 \u0000(即为0)
最大值是 \uffff(即为65,535)
void - - Void -

Java语言是一个面向对象的语言,但是Java中的基本数据类型却不是对象,在实际使用时存在很多的不便,为了解决这个不足,在设计类时java为每个基本数据类型设计了一个对应的类,这些类统称为包装类(Wrapper Class),对于包装类说,他们的用途主要包含两种:

    1.作为和基本数据类型对应的类类型存在,方便涉及到对象的操作;

    2.包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法;

 

二.装箱和拆箱

  装箱:就是自动将基本数据类型转换为包装器类型

  拆箱:就是自动将包装器类型转换为基本数据类型

通过阅读源码,可以发现Integer、Short、Byte、Character 有缓存机制,Double 和 Float 没有缓存机制,代码如下:

public static Double valueOf(double var0) {
    return new Double(var0);
}
public static Short valueOf(short var0) { return var0 >= -128 && var0 <= 127 ? Short.ShortCache.cache[var0 + 128] : new Short(var0); } public static Integer valueOf(int var0) { return var0 >= -128 && var0 <= Integer.IntegerCache.high ? Integer.IntegerCache.cache[var0 + 128] : new Integer(var0); }

由于缓存机制的存在,所以下面的结果就是true,false,false:

Integer a = 100;
Integer b = 100;
Integer c = 300;
Integer d = 300;
Integer e = new Integer(100);

a == b;
c == d;
a == e;

结果为: truefalsefalse

 

装箱拆箱的参考文档:

https://blog.csdn.net/babycan5/article/details/81942230

 

三.java常用数据类型比较大小

1.基本类型 byte,char,int,short,long,float,long,double,直接比较大小,< ,>, == 都可以用来直接比较

2.包装类型,需要考虑装箱和拆箱,参见上面的内容,比如:

Integer类型比较,范围在-128到127之间可以直接比较用==进行比较,超过范围的,

因为Integer类型在比较大小的时候会拆箱,在超过-128到127范围会重新new对象,此时比较==,两个地址已经不相同

其他类型Double,Float,Long比较==返回false,比较大于,小于还是可以的。

3.基本类型和包装类型

包装类型和基本类型比较大小,包装类型会先拆箱,转为基本类型然后再作比较,所以包装类型和基本类型可以直接使用< > ==


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM