写BUG的派大星

Patrick Star

  • 首页
  • 归档

  • 搜索
设计模式 Gis Kafka Druid 微信小程序 Java 开源项目源码 物体识别 机器学习 Mybatis 微服务 Feign OpenVPN CSS Streamsets CDH SpringCloud SpringBoot maven 分布式 Shell Tree Linux js WebSocket 多线程 集群 Hadoop 大数据 JDK ElasticSearch MySQL 数据库 Redis Http Nginx

Java中int和Integer的区别

发表于 2020-06-08 | 分类于 Java | 0 | 阅读次数 801

区别

  1. Integer是int的包装类,而int是Java的一种基本数据类型。
  2. int变量不需要实例化,Integer变量必须实例化才可以使用。
  3. Integer是对象的引用,当new了一个Integer之后,实际上是生成了一个指针,该指针指向此对象,int则是直接存储数据的数值。
  4. Integer默认值为null,int默认值为0。

扩展

  1. 通过new生成的两个Integer对象永远不相等,因为是两个对象,内存地址不同。
  2. Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(Integer与int比较时,Java会自动拆包,实际上变成了两个int在比较)
  3. 非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)
  4. 两个非new生成的Integer对象比较数值的时候,如果值在-128到127之间,返回true,其余范围则返回false。
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b); //false
Integer c = new Integer(100);
int d = 100;
System.out.println(c == d); //true
Integer e = new Integer(100);
Integer f = 100;
System.out.println(e == f);//false
Integer g = 100;
Integer h = 100;
System.out.println(g == h); //true
Integer i = 128;
Integer j = 128;
System.out.println(i == j); //false
  • 本文作者: Patrick
  • 本文链接: https://www.write1bug.cn/archives/java中int和integer的区别
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 设计模式 # Gis # Kafka # Druid # 微信小程序 # Java # 开源项目源码 # 物体识别 # 机器学习 # Mybatis # 微服务 # Feign # OpenVPN # CSS # Streamsets # CDH # SpringCloud # SpringBoot # maven # 分布式 # Shell # Tree # Linux # js # WebSocket # 多线程 # 集群 # Hadoop # 大数据 # JDK # ElasticSearch # MySQL # 数据库 # Redis # Http # Nginx
Http常见错误
将jar注册为Linux的service
  • 文章目录
  • 站点概览
Patrick

Patrick

不是在改BUG,就是在写BUG。

52 日志
9 分类
36 标签
RSS
E-mail
Creative Commons
© 2018 — 2023 Patrick
人生如逆旅|我亦是行人
鲁ICP备18043140号-1