“==”比较的是地址,牢记。
1。对象。integer 是对象
Integer i1 = 20;
Integer i2 = 20 ;
System.out.println(i1 == i2); // true
Integer i3 = 200;
Integer i4 = 200 ;
System.out.println(i3 == i4); // false
原因:Integer i1 = 20; 其实是一个自动装箱的过程,编译器会自动展开成Integer i = Integer.valueOf(20);详情可以看Integer.valueOf的源代码,可以看到参数的值在IntegerCache.low(默 认-128) 到 IntegerCache.high(默认127)范围内时(比如20),会从IntegerCache.cache中直接取(此处参考Integer的 内部类IntegerCache的源代码,如果不配置的话,默认是cache存储-128到127的Integer),所以取到的都是同一个 Integer的对象,因此相同。而200不在-128到127范围内,所以会new 一个新的Integer,故不相同。
 
2.类型。int 是基本数据类型
 
int i1=20;
int i2=20;
System.out.println(i1==i2);//true
int i3=200;
int i4=200;
System.err.println(i3==i4);//true

原因:i1 开辟了一个内存空间,对于i2来说,jvm先在内存中寻找是否有20的地址,有就给i2赋值,也就是让i2也指向20那块地址。所以返回的是TRUE.

3.

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

返回的是false。

原因:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是true了。

 
 
 
 

最新文章

  1. 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。
  2. soj1001算法分析
  3. C++11之thread线程
  4. {"集合已修改;可能无法执行枚举操作。"}
  5. android5.x以上 状态栏透明的问题
  6. 学java入门到精通,不得不看的15本书
  7. python子进程模块subprocess调用shell命令
  8. 自定义list排序
  9. 深入理解js中的apply、call、bind
  10. ubuntu频繁出现 安装包依赖关系
  11. ClientDataSet使用locate或Filter定位到字段为空值的记录
  12. idea 优先引用项目代码,而非jar包
  13. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
  14. 红米3 TWRP-3.2.1-0(android_7.1.2_r29) 刷8.1不提示错误 刷MIUI不再卡屏 修复无系统重启问题 更新于20180316
  15. MySQL MHA 报错处理
  16. 函数和常用模块【day06】:logging模块(八)
  17. android异步处理机制
  18. vs2012 怎样解决 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包的问题
  19. jenkins start
  20. [codeforces/edu4]总结(F)

热门文章

  1. 【NoSql】之Hbase
  2. Deepin15.8系统下安装QorIQ Linux SDK v2.0 yocto成功完美运行的随笔
  3. Java基础——常用类之日期时间类
  4. 【python3】爬取简书评论生成词云
  5. 5322: [Jxoi2018]排序问题
  6. JNDI是什么,怎么理解
  7. python中偏函数的应用
  8. 开发中常遇到的linux系统配置操作整理
  9. Python标准库学习之zipfile模块
  10. UWP 卡片视图 Card View