1—数据类型

Java数据类型(个人观点,若有不足,敬请指出)

1—基本数据类型大小

byte 1字节
short 2字节
int 4字节
long 8字节 
float 4字节
double 8字节
char 2字节
boolean 1字节

2—数据类型的转换

数据类型之间会出现转换的情况,一种转换成另一种会出现精度损失的情况:(1)一个大数值转成一个小数值,就可能出现大数值的值大于小数值数据类型的最大数值,就可能出现丢失精度;(2)浮点类型转整数类型会自动剪掉后面的小数点后面的数值。虽然这些转换是不安全的,但是Java允许这种转换——强制类型转换。

在数值进行运算中,如果二个数值类型不同,先要转换成同一种才能进行计算。只要有一个double类型,其余就转换成double类型;然后就是float;然后是long;否则,那个多个操作数计算自动转换成int。

3—基本数据对象包装类

包装类存在的意义是为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。

byte             Byte
short    Short
int         Integer
long             Long
float     Float
double Double
char             Character
boolean      Boolean
因为是对象,所以所有包装类默认值是null

自动拆箱,自动装箱:就是对象类型和基本数据类型自动转换,如 Integer i = 3;int i2 = i;

拆箱实现:自动将基本数据类型转换为包装器类型;装箱过程是通过调用包装器的valueOf方法实现的

装箱实现:自动将包装器类型转换为基本数据类型。拆箱过程是通过调用包装器的xxxValue方法实现的。(xxx代表对应的基本数据类型)。

基本数据包装类与常量池技术

这个是非常有意思的一个点,基本数据包装类也运用了常量池技术,下面是Integer源码的拆箱方法

public static Integer valueOf(int i) {
    //当我们传入的数值i>=IntegerCache.low=-128并小于IntegerCache.high(默认是127,可以调整大小)
        if (i >= IntegerCache.low && i <= IntegerCache.high)
        //从IntegerCache中取,这个类使用了常量池技术。
            return IntegerCache.cache[i + (-IntegerCache.low)];
    //若不再-128~127之间返回一个新对象
        return new Integer(i);
    }

由以上源码可知,当一个包装类在允许的取值范围里,如Integer在-128~127取值时,他通过valueof返回的是常量池的对象。所以当二个范围内对象==比较时,他们是ture地址相同的。

我的代码

Integer k = 1300;
Integer k1 = 1300;
int k2 = 1300;
Integer k3 = 12;
Integer k4 = 12;
Integer k5 = new Integer(12);
Integer k6 = new Integer(4)+new Integer(8);
Short a = 1200;
short b = 1300;

System.out.println(k==k1);flase-不在取值范围内。
System.out.println(k==k2);ture-拆箱机制,k会装换成基本数据类型比较大小。
//System.out.println(k==a);报错-不同“对象类型”无法比较。
System.out.println(k==b);ture-拆箱,不同数据类型直接比较值大小。
System.out.println(k3==k4);ture-在取值范围内返回常量池同一对象
System.out.println(k3==k5);flase-一个是堆一个是常量池。
System.out.println(k3==k6);ture-k6也调用了intvalue方法,也是常量池对象。

注意
包装类中Double,Float返回的是新对象,没有使用常量池技术,源码如下

public static Float valueOf(float f) {
        return new Float(f);
    }
 public static Double valueOf(double d) {
        return new Double(d);
    }

boolean返回简单,所有ture和flase都是同一个对象,就连他的返回对象在源码中都是用的static final修饰的。

 public static final Boolean TRUE =new Boolean(true);
    public static final Boolean FALSE =new Boolean(false);
    public static Boolean valueOf(booleanb) {
        return (b ?TRUE : FALSE);
}

包装类取值范围
Integer 相同对象范围 [-128,127]

Short 相同对象范围 [-128,127]

Byte 相同对象范围 [-128,127]

Character 相同对象范围 [0,127] char没有负数

Long 相同对象范围 [-128,127]

包装类的queals()方法
所有包装类都重写了equals()方法,比较值的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值