java基础:基本数据类型

概念

在Java语言中有两种数据类型,为基本数据类型和引用数据类型。基本数据类型总共有8种,分别为byte、short、int、long、float、double、boolean、char。在程序开发过程中,我们通过以上8个关键字来定义存储对应类型数据的变量。

基本数据类型及描述

数据类型字节长度范围默认值包装类
int4-231~231-10Integer
short2-215~215-10Short
long8-263~263-10L或0lLong
byte1-27~27-10Byte
float432位IEEE7754单精度范围0.0F或0.0fFloat
doublle864位IEEE7754双精度范围0.0Double
char2Unicode[0,65535]u0000Character
boolean1true或falsefalseBoolean

以上的基本数据类型可以分为四类:
(1)int长度数据类型:byte、short、int、long
这四个基本数据类型的取值范围:b=字节长度*8,范围为-2b-1~2b-1-1
(2)小数点类型:float单精度、double双精度
(3)boolean类型
(4)char类型:使用Unicode编码的字符类型

封装类

为什么需要封装类?

①基本数据类型是值传递,封装类是引用传递,在实际运用中,如果你想用一个int对象的引用,那么就需要使用到封装类。
②基本数据类型不能调用方法,而封装类提供了很多的方法,比如valueOf()、toString()等,使得程序中处理起数据更简便。

注意:Int和char的包装类为Integer和Character,其他包装类都是基本类型首字母大写

装箱
Integer i = new Integer(10);
拆箱
int a = i.intValue();

自动拆箱和自动装箱(JDK1.5版本后)

封装类变为基本数据类型的过程叫做自动拆箱;基本数据类型变为封装类的过程叫做自动装箱

Integer i =10;
int a = i;

自动拆箱和装箱的好处:
①代码简洁:由于自动拆装箱,使得Integer和int可以互相转化,我们可以直接对Integer进行加减等运算,转换的过程交给JVM。
②节约内存:
看一个代码示例:

	    Integer i1 = 44;
		Integer i2 = 44;
		Integer i3 = 130;
		Integer i4 = 130;
		System.out.println(i1==i2);//true
		System.out.println(i3==i4);	//false

为什么1和2是true的,到了3和4就成了false了?

来看一下Integer的源码

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
        //low为-128,high为127
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

通过观察源码,我们可以看到,当传入的int值为-128到127之间的时候,包装成封装类后会存放在内存中来给予重用,因为Integer比较的是引用对象,1和2的对象没有变过所以返回true;而当这个数值超过这个范围后,valueOf这个方法会生成一个新的Integer对象,所以两次定义就创建了两个对象,那么结果也就返回false了。

这个数据范围也叫做自动装箱池,对于创建一些小数值时的包装类对象时,就会进行复用,从而节省了内存和对象创建的开销。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值