int和Integer的区别
1、Integer是int的包装类,int则是java的一种基本数据类型
2、Integer变量必须实例化后才能使用,而int变量不需要
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
4、Integer的默认值是null,int的默认值是0

延伸:
关于Integer和int的比较
1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

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

2、Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true

3、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)

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

4、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

对于第4条的原因:
java在编译Integer i = 100 ;时,会翻译成为Integer i = Integer.valueOf(100);,而java API中对Integer类型的valueOf的定义如下:

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

java对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了

如果有错误的地方,还请指正。

参考:
http://blog.csdn.net/you23hai45/article/details/50734274
http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html

java学习笔记(一)int和Integer的区别相关推荐

  1. (JAVA学习笔记) 关于i++和++i的区别

    关于i++和++i的区别 首先看下面一串代码: int i=0;int a = i++;System.out.println("a="+a);System.out.println( ...

  2. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  3. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  4. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  5. java学习笔记5--类的方法

    接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...

  6. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  7. Java学习笔记 2021-7-1 2021-7-8

    Java学习笔记 Stream流 1 Stream流的体验 stream流的生成操作 stream中间流操作 filter limit和skip concat和distinct sorted map和 ...

  8. 尚学堂Java学习笔记

    尚学堂Java学习笔记 ============================ J2SDK&JRE J2SDK:JAVA2 SOFTWARE DEVELOPMENT KIT JRE:JAVA ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

最新文章

  1. squid一些其它配置
  2. python是一种语言还是一个软件-Python还是一种
  3. php gearmanclient addoptions,gearman PHP7扩展安装
  4. 判别学习与生成学习的区别
  5. mysql 实现master-slave 同步
  6. python中的threading_python中threading的用法
  7. YOLO-V4解读:速度与精度的完美结合
  8. 国内外开源sns源码大全
  9. Windows创建用户定义的服务(srvany.exe和instsrv.exe )
  10. 简单图形的输入输出练习
  11. 解决微信缓存网页,导致不能及时更新问题
  12. FYI | OHBM/Brain 会议投稿指北
  13. mov文件如何转换成mp4视频
  14. 复旦美女学霸张安琪的五个“神迹”和背后的真实故事
  15. (个人记录)Ensight后处理EDEM学习笔记
  16. Couldn‘t terminate the existing process for xxx
  17. 动听的“教育之歌”,消费金融们的演奏响而不悦耳
  18. win10的bat文件或者cmd文件关联了文本编辑器导致无法运行
  19. 初探iOS单元测试XCTest
  20. Linux 防火墙开启端口

热门文章

  1. bWAPP之环境搭建及HTML注入
  2. XJTU2017Robocon少年的总结
  3. TensorFlow 编程模型
  4. 「实在RPA·金融数字员工」为风险防范摁下快捷键
  5. latex中bibitem的整理。
  6. iOS 16 新 API 和功能
  7. 用最小二乘法拟合二元多次曲线
  8. 服务器centos安装mysql数据库_阿里云 centos7 安装mysql数据库
  9. 解决scanf造成的死循环问题
  10. loadrunner脚本编写(转载至虫师博客)