int i02=59 ,这是一个基本类型,存储在栈中。

Integer i03 =Integer.valueOf(59); 因为 IntegerCache 中已经存在此对象,所以,直接返回引用。

Integer i04 = new Integer(59) ;直接创建一个新的对象。

System. out .println(i01== i02); i01 是 Integer 对象, i02 是 int ,这里比较的不是地址,而是值。 Integer 会自动拆箱成 int ,然后进行值的比较。所以,为真。

System. out .println(i01== i03); 因为 i03 返回的是 i01 的引用,所以,为真。

System. out .println(i03==i04); 因为 i04 是重新创建的对象,所以 i03,i04 是指向不同的对象,因此比较结果为假。

System. out .println(i02== i04); 因为 i02 是基本类型,所以此时 i04 会自动拆箱,进行值比较,所以,结果为真。

另外的实例:

public class Test{

      public static void main(){

          String s1="monday";

          String s2="monday";

         if(s1==s2){system.out.printLn("s1=s2");}

        else{system.out.printLn("s1!=s2");}

}

}

输出:s1=s2;//

public class Test{

      public static void main(){

          String s1="monday";

          String s2= new String("monday");

         if(s1==s2){system.out.printLn("s1=s2");}

        else{system.out.printLn("s1!=s2");}

}

}

输出:s1!=s2;//

字符串缓冲池
原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1
将s2引用s1所引用的对象"Monday"
第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?

"=="和equal的比较

一、比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean)
比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。 备注:String不是基本数据类型 二、比较对象为引用数据类型 euqals和==本质上都是比较比较的是两个对象的引用(内存地址)是否相同。equals()是Object类的方法 ,object类是所有类的基类,所以每个类都会继承equals()方法。
但在String,Integer,Date在这些类当中重写了equals方法,而不再是比较对象在堆内存中的存放地址了,而是比较它们指向的实体(内容)是否相同。

最新文章

  1. C# 根据类型名称 生成实体 调用方法
  2. return和finally的执行和联系
  3. docker-compose启动的tomcat无法远程连接jmx
  4. 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】
  5. JMeter压力测试以文件的形式
  6. 客户端(android,ios)与服务器通信
  7. jQueryEasyUI中DataGrid的height,width,fit,fitColumns属性
  8. Altium Designer中各层的含义
  9. CMake使用之一
  10. javascript转换.net DateTime方法 (比如转换\/Date(1426056463000)\/)
  11. Git&GitHub-基础教程
  12. Linux 系统最大TCP连接数 调优
  13. linux每日命令(5):mkdir命令
  14. 火狐浏览器firebug
  15. day03_雷神_文件操作
  16. Educational Codeforces Round 13 D. Iterated Linear Function 水题
  17. document ready
  18. Caesars Cipher
  19. linux命令(6/9):watch命令
  20. Android · 广告走灯

热门文章

  1. gitlab merge过程
  2. 记录Linux常用命令
  3. 在线安装Ganglia3.6.0,nginx+php搭建gweb,绝对通过
  4. UILabel与UIFont的用法和属性的一些总结
  5. webpack与grunt/glub 的比较
  6. Android源代码下载过程中无法下载repo的解决方法【转】
  7. sql server filter table name
  8. css盒子模型详解一
  9. android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
  10. LA-3029(扫描线)