首页 > 编程语言 >【学习日志】Java基本数据类型的自动装箱和拆箱

【学习日志】Java基本数据类型的自动装箱和拆箱

时间:2023-03-15 18:34:15浏览次数:45  
标签:拆箱 Java 数据类型 System equals println Integer out

// 测试代码
public static void main(String[] args) {
        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 128;
        Integer f = 128;
        Long g = 3l;
        System.out.println(c == d);
        System.out.println(e == f);
        System.out.println(c == (a+b));
        System.out.println(c.equals(a+b));
        System.out.println(g == a+b);
        System.out.println(g.equals(a+b));
}

输出结果:

true
false
true
true
true
false

原因:

1.内存地址对比,但是由于值处于-128~127,因此存储在常量池中,内存地址相同

2.内存地址对比,由于值不在-128~127,因此值存储在堆中,内存地址不同

3.遇到运算符+号,自动拆箱为int类型对比,值相同

4.调用Integer的equals方法,遇到+号,自动拆箱为int类型的3,传入equals方法,自动装箱为Integer类型的3,进行值对比,具体可查看Integer类型的equals方法源码,值相同

5.遇到运算符+ 号,自动拆箱为int,与Long类型对比,自动转型为long(编译时),自动拆箱为long类型对比,值相同

6.遇到运算符+ 号,自动拆箱为int,传入equals方法,自动装箱为Integer类型的3,不属于Long类型,具体可查看Long类型的equals方法源码,返回false

 

解释一下==和equals的区别

  定义 对于基本数据类型 对于引用数据类型
== 运算符 对比值 对比内存地址
equals Object类的方法 - 使用==对比,可以看下Object类下的equals方法源码

 

 

 

附上源码:

Object equals方法

Integer equals方法

 

 Long equals方法

 

 另外自动转型:

 源码:

 

 编译后:

 

标签:拆箱,Java,数据类型,System,equals,println,Integer,out
From: https://www.cnblogs.com/maerpao/p/17219545.html

相关文章

  • Java字符串基础练习题2(较难)
    ​生成验证码内容:可以是小写字母,也可以是大写字母,还可以是数字​规则: 长度为5 内容中是四位字母,1位数字。 其中数字只有1位,但是可以出现在任意的位置。publicstati......
  • 达梦数据库报错:数据类型不匹配
    最近在用达梦数据库,今天碰到一个问题,报错:数据类型不匹配。查询条件中有个字段是TEXT类型,jdbcType之前是VARCHAR,我把它改成了LONGVARCHAR,心想这下应该好了吧,结果还是报错,......
  • java进阶 -JFrame36
      packagecom.cyjt97.Frame;importjavax.swing.*;publicclassJFrameDEME{publicstaticvoidmain(String[]args){//创建窗体JFr......
  • Java:SpringBoot获取所有接口的路由映射关系
    重要:版本很重要,先说一下版本,版本不一样,可能获取结果也不一样spring-boot2.7.7java1.8定义一个查看路由的数据结构packagecom.example.demo.entity;importlombok.......
  • JAVA开发 电信支付系统短信模块精准发送短信
    电信支付测试环境检测支付系统设备磁盘运行情况,监控磁盘到一定阀值,从client连到支付系统的统一短信模块,统一短信模块连接到短信发送系统,发送短信。短信模块也可应用于业务预......
  • SPARK 使用Java 在IDE中实战RDD和DataFrame动态转换操作
    /***王家林老师授课​​​http://weibo.com/ilovepains​​*/ 源文件1,Spark,72,Hadoop,113,Flink,5 运行结果 ......
  • Java float 和 double 精度问题
    先看现象涉及诸如float或者double这两种浮点型数据的处理时,偶尔总会有一些怪怪的现象,不知道大家注意过没,举几个常见的栗子:典型现象(一):条件判断超预期System.out.println(......
  • java接口学习笔记
    目录java接口学习笔记1.抽象类和抽象方法2.接口3.抽象类和接口对比参考java接口学习笔记1.抽象类和抽象方法抽象方法:abstractvoidf();抽象类:包含抽象方法的类称......
  • QT5笔记: 8. QT的全局变量(基本数据类型、函数、宏)
    这个头文件中存放着QT类库的一些全局定义,一般Qt类的头文件会包含这个头文件:基本数据类型函数宏数据类型:保证跨平台时各数据类型长度统一函数定义(一些数......
  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
    需要完成功能借助redisStream数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本IDE:IDEA2022 1、读取库存数......