Java 中 int 和 Integer 的区别

1. int 是基本数据类型,int 变量存储的是数值。Integer 是引用类型,实际是一个对象,Integer 存储的是引用对象的地址。

2.

Integer i = new Integer(100);

Integer j = new Integer(100);

System.out.print(i == j); //false

因为 new 生成的是两个对象,其内存地址不同。

3.

int 和 Integer 所占内存比较:

Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。

4. 非 new 生成的 Integer 变量与 new Integer() 生成的变量比较,结果为 false。

/**

* 比较非new生成的Integer变量与new生成的Integer变量

*/

public class Test {

public static void main(String[] args) {

Integer i= new Integer(200);

Integer j = 200;

System.out.print(i == j);

//输出:false

}

}

因为非 new 生成的 Integer 变量指向的是 java 常量池中的对象,而 new Integer() 生成的变量指向堆中新建的对象,两者在内存中的地址不同。所以输出为 false。

5. 两个非 new 生成的 Integer 对象进行比较,如果两个变量的值在区间 [-128,127] 之间,比较结果为 true;否则,结果为 false。

/**

* 比较两个非new生成的Integer变量

*/

public class Test {

public static void main(String[] args) {

Integer i1 = 127;

Integer ji = 127;

System.out.println(i1 == ji);//输出:true

Integer i2 = 128;

Integer j2 = 128;

System.out.println(i2 == j2);//输出:false

}

}

java 在编译 Integer i1 = 127 时,会翻译成 Integer i1 = Integer.valueOf(127)。

6. Integer 变量(无论是否是 new 生成的)与 int 变量比较,只要两个变量的值是相等的,结果都为 true。

/**

* 比较Integer变量与int变量

*/

public class Test {

public static void main(String[] args) {

Integer i1 = 200;

Integer i2 = new Integer(200);

int j = 200;

System.out.println(i1 == j);//输出:true

System.out.println(i2 == j);//输出:true

}

}

包装类 Integer 变量在与基本数据类型 int 变量比较时,Integer 会自动拆包装为 int,然后进行比较,实际上就是两个 int 变量进行比较,值相等,所以为 true。

flaming

flaming

248***1347@qq.com1年前 (2018-12-12)

Java菜鸟教程math类_Java Number Math 类相关推荐

  1. java简单通讯录的实现02person类_Java中Math类的简单介绍

    我想对于Math类大家一定很熟悉了,是Java提供的一个用来进行简单数学运算的工具类.对于Math类来说,常用的方法有: 加法 public static int addExact(int x, in ...

  2. java math 函数_Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

  3. Java菜鸟教程笔记

    参考:http://www.runoob.com/java/java-tutorial.html Java 基本数据类型 内置数据类型 引用类型 Java 变量类型 Java 局部变量 实例变量 类变 ...

  4. java 系统 类_Java常用实体类--System类

    字符串.日期.数字是Java程序中最常使用的数据对象,对这些数据的创建.修改.格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握.本节将通过实例演示以下常用实体类Java系统级类:系统类Sy ...

  5. Java菜鸟教程系列 学习笔记总结 基础篇(1)

    基础语法 本博客通过学习菜鸟教程Java专栏,并整理得出的Java基础知识. 命名规范 1.项目名全部小写 2.包名全部小写 3.类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写.如: ...

  6. java date 操作类_JAVA时间操作类常用方法汇总

    1.JAVA中日期的获取.设置和格式化 (1)JAVA提供了3个日期类:Date.Calendar和DateFormat. Date()方法主要用于创建日期对象并获取日期: Calendar()方法主 ...

  7. java程序设计教程与项目_Java程序设计教程与项目实训

    书名:Java程序设计教程与项目实训 作者:温秀梅.司亚超 出版社:清华大学出版社 出版日期:2017/8/1 字数: 页数: 版次: ISBN:9787#302473701 定价:49.5 目录 章 ...

  8. java 添加类_java如何添加类

    Java JDK的安装以及CLASSPATH设置系统变量 Java JDK的安装以及CLASSPATH设置系统变量向你介绍如何在Windows条件下进行Java JDK的安装以及CLASSPATH系统 ...

  9. java常用的集合对象_java常用实体类、集合类

    java常用实体类.集合类 [转自51cto博客jichangwei的BLOG] 1:String类,字符串是常量,他们的值在创建之后不能更改,可以共享. equals()用来比较两个字符串的值,== ...

最新文章

  1. Druid.io索引过程分析——时间窗,列存储,LSM树,充分利用内存,concise压缩
  2. 1880: wjw的火车站(栈)
  3. linux怎么看日期,linux 怎么用命令查看日期
  4. python堆栈反向输出列表_python - IPython:将Python脚本的输出重定向到文件(如bash) - 堆栈内存溢出...
  5. 将联网方式更改为桥接模式
  6. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)
  7. 微信小程序 - 授权页面
  8. 招聘网站数百万条敏感数据泄露,简历、×××扫描件统统曝光
  9. epoll和libevent
  10. 50个提高会话技巧的方法 (转IT经理人)
  11. 服务器怎么修改远程桌面端口号,windows系统如何修改默认的远程桌面端口 如何更改服务器远程端口...
  12. 2021-01-27
  13. 非常全面的UI设计面试技巧,简单实用值得收藏
  14. Excel 多级下拉菜单设置,数据有效性
  15. VBA EXCEL 实现图片保存到ACCESS数据库(OLE对象)
  16. java 反射 protected_通过Java反射机制访问private,protected变量和方法
  17. 大脑是什么样的网络?
  18. 踩坑!穿山甲广告Android SDK接入
  19. vue创建的挂钩中出错_建立自己的Vue 3 SWR挂钩
  20. 三星手机定时开关机设置方法

热门文章

  1. nginx+php+memcache高速缓存openresty)
  2. 问题 D: AC自动机(二分,第一个等于和最后一个等于)
  3. P1219 八皇后(N皇后,烧脑标记剪枝,DFS)
  4. 程序员看过来:阿里毕玄提升代码能力的4段经历
  5. R语言数据挖掘实践——系谱聚类
  6. 基于RadeonRays的光线追踪全局光照实现方案
  7. 初烧盲狙一条铁三角e40
  8. 【实施工程师之家】linux安装mysql(yum安装mysql)
  9. ASP.NET Core微服务(二)——【ASP.NET Core Swagger配置】
  10. dos中特殊符号命令的应用