Java Integer ==

先看一下这段代码

Integer integer1 = 100;
Integer integer2 = 100;
System.out.println("integer1 == integer2:"+(integer1==integer2));
Integer integer3 = 1000;
Integer integer4 = 1000;
System.out.println("integer1 == integer2:"+(integer3==integer4));

输出结果:

很久之前就知道这里有个坑,今天看到别人分析了一下Integer.java的源代码才知道具体是为什么

Integer.java

可以看出来使用Integer.valueOf(i)的时候并不会立即new一个Integer对象,而是先判断是否在缓存数组里面

不知道称作缓存是不是不太合适

IntegerCache是一个嵌套类(静态内部类)

在静态初始化块中完成的初始化,在这里确定的范围是-128~127

包装器获取的时候会调用 Integer.valueOf(i)

Java核心技术里面有提到,之前一直也没注意

所以直接new 创建一个Integer 使用==比较还是会false

Integer integer = new Integer(100);
System.out.println("integer1 == integer2:"+(integer1==integer));

integer1 == integer2:false

为了以后避免这种坑,还是使用 equals比较好

当然,要判断 == null

以后遇到问题还是多看一下源码比较好

Java Integer == 以及分析的更多相关文章

  1. Java Integer类分析

    public static final int   MIN_VALUE = 0x80000000;  -2^31 public static final int   MAX_VALUE = 0x7ff ...

  2. Java内存原型分析:基本知识

    转载: Java内存原型分析:基本知识 java虚拟机内存原型 寄存器:我们在程序中无法控制 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据 静 ...

  3. Java字节码分析

    目录 Java字节码分析 查看字节码详细内容 javap 实例分析 Java字节码分析 对于源码的效率,但从源码来看有时无法分析出准确的结果,因为不同的编译器版本可能会将相同的源码编译成不同的字节码, ...

  4. (转)java内存分配分析/栈内存、堆内存

    转自(http://blog.csdn.net/qh_java/article/details/9084091) java内存分配分析/栈内存.堆内存 java内存分配分析 本文将由浅入深详细介绍Ja ...

  5. Java源码分析 | CharSequence

    本文基于 OracleJDK 11, HotSpot 虚拟机. CharSequence 定义 CharSequence 是 java.lang 包下的一个接口,是 char 值的可读序列, 即其本身 ...

  6. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

  7. Java线程问题分析定位

    Java线程问题分析定位 分析步骤: 1.使用top命令查看系统资源占用情况,发现Java进程占用大量CPU资源,PID为11572: 2.显示进程详细列表命令:ps -mp 11572 -o THR ...

  8. java integer对象判断两个数字是否相等

    java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...

  9. java内存溢出分析(二)

    我们继续java内存溢出分析(一)的分析,点击Details>按钮,显示如下图,我们发现有一个对象数量达到280370216个,再点击其中的List objects 点击后,显示下图 至此,我们 ...

随机推荐

  1. Windows10 IIS配置PHP运行环境(原创)

    在Windows 10/8 的IIS(8.0)中搭建PHP运行环境: 如果解决了您的问题,文章底部点击下关注,做原创内容不容易,谢谢.转载请注明出处 PS:顺便推荐下自己写的,开源PHP极速后台开发框 ...

  2. QT容器map的插入,修改,遍历

    除了map,QT的容器还有hash,以及迭代器等,这里写的是map #include "mainwindow.h" #include <QApplication> #i ...

  3. 如何使git忽略某些文件或文件夹

    为什么要忽略某些文件或文件夹的变化? git作为一款项目文件变更版本管理软件,其主要功能之一就是追踪项目文件夹内各种文件及文件夹的变更情况.但是,在日常使用中,并非项目文件夹下的所有文件及文件夹变更都 ...

  4. maven构建报错org.apache.maven.lifecycle.LifecycleExecutionException

    2017年06月04日 15:03:10 阅读数:7991 maven构建报错 org.apache.maven.lifecycle.LifecycleExecutionException: Fail ...

  5. 利用Kali进行WiFi钓鱼测试实战

    文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用.请不要做一只咖啡馆里安静的猥琐大叔. 写在前面 从至少一年前我就一直想在自己跑kali的笔记本上架个钓鱼热点.然而由于网上的 ...

  6. CopyOnWriteArrayList对比ArrayList

    ArrayList非线程安全,CopyOnWriteArrayList线程安全 ArrayList添加元素的时候内部会预先分配存储空间,CopyOnWriteArrayList每次添加元素都会重新co ...

  7. AngularJs学习笔记--Understanding Angular Templates

    原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model angular template是一个声明规范,与mode ...

  8. java里面list是引用的好例子

    java里面的赋值和引用是不同的,以后要详细总结一下! 看一个例子: public static void main(String[] args) { List<String> list ...

  9. Django 模型中DateField字段

    DateField¶ class DateField([auto_now=False, auto_now_add=False, **options])¶ 这是一个使用Python的datetime.d ...

  10. HDU 6470 Count 【矩阵快速幂】(广东工业大学第十四届程序设计竞赛 )

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6470 Count Time Limit: 6000/3000 MS (Java/Others)    ...