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方法,而不再是比较对象在堆内存中的存放地址了,而是比较它们指向的实体(内容)是否相同。

转载于:https://www.cnblogs.com/Lxiaojiang/p/6709950.html

Java中“==”的使用,以及“==”和equal的比较相关推荐

  1. 关于java中判断字符串相等==和equal 详解

    ①如果我们定义两个字符串: String c="123";         String d="123"; System.out.println(c==d); ...

  2. Java中equal和==的区别

    equal和==均表示相等的意思,但是它们进行实际的相等的判定的时候,却有非常大的区别.这还得从JAVA的堆栈说起.初学者对他们的两者的概念的理解很容易模糊.在实际编程工作中就容易造成一些不容易发现的 ...

  3. java中hashcode_浅谈Java中的Hash值

    1.Hash值有什么用? HashMap.HashTable.HashSet,所以涉及到使用Hash值进行优化存储的地方,都会用到HashCode.HashCode是Key,这种计算为提高计算的性能. ...

  4. Java中比较两个Double类型数据的大小

    在java中int类型比较可以用"==",而double类型的数据不能用"= ="比较,否则得到永不相等的结果. 一般可以Double的doubleToLong ...

  5. Java中的BigDecimal类你真的了解吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HikariCP www.jianshu.com/p/c81 ...

  6. java类型精度排序,Java中BigDecimal精度和相等比较的坑

    为什么要有bigdecimal ,他是干什么的 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计 ...

  7. java arrays.sort() c_正面刚算法-Java中Arrays.sort()(一)

    最近一直在看关于排序相关的算法,从O(n²)的冒泡.插入.选择到O(nlog(n))的归并.快排.再到桶排序.计数排序.基数排序.各个算法都有自己的优点和缺点,那么jdk中关于这种底层的算法是怎么实现 ...

  8. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...

    (注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...

  9. Java 中 Comparable 和 Comparator 比较

    为什么80%的码农都做不了架构师?>>>    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...

  10. 8. Java 中的运算符 【连载 8】

    在前面的内容已经学会了如何定义变量和初始化变量.定义变量的目的就是为了操作数据.Java 语言中给我们提供了专门用来操作这些数据的代码符号,统称为"运算符". 按照操作符的用法,我 ...

最新文章

  1. 干货回顾丨TensorFlow四种Cross Entropy算法的实现和应用
  2. 推荐陈永真著作《高效率开关电源设计与制作》
  3. allgro显示网络名称_相同的4G网络,为什么你的网速总是慢?知道这3点原因,网速翻倍...
  4. 技术派的梦想旅行 用大数据推动旅游2.0
  5. java.lang.IllegalStateException: ContainerBase.addChild: start
  6. php 抓取页面图片,php 抓取网页内容与图片的方法
  7. 暑期训练日志----2018.8.10
  8. python中如何追加_如何在Python中将元素添加到列表中-追加,扩展和插入
  9. 计算机科学全程,EduGlobalB2B德保罗大学金融计算机科学硕士桥梁STEM全程免GREGMAT...
  10. linux系统网络命令(六)
  11. 哈理工OJ 1184 早起一水(水题)
  12. html如何设置自动点击事件,使用javascript给html元素添加click事件
  13. 我的团长我的团第十七集
  14. 如何对磁盘分区进行写保护
  15. java——配置环境变量
  16. 今天没有穿内裤._今天...
  17. 没有gpedit.msc这个文件获取管理员权限
  18. MAC下使用 XMAPP 配置 php 环境
  19. 互联网日报 | 6月24日 星期四 | 快手全球月活已达10亿;HarmonyOS 2首批正式版升级;微软市值突破2万亿美元...
  20. 阿里云在家实践计划主机申请教程

热门文章

  1. 自学python需要下载什么软件-一篇告诉你为什么人人都应该学点Python?
  2. python用途与前景-Python的发展前景及干货!!
  3. python官网下载步骤64位-电脑64位怎么下载python
  4. python字符串写入excel-python 将数据写入excel
  5. python编程基础语法-Python编程基础语法快速入门
  6. python培训好学吗-Python爬虫培训好学吗?
  7. 十大python开发软件-2017年最棒的七个Python图形应用GUI开发框架
  8. 学python需要学数据库吗-Python学什么数据库
  9. python3教程-Python3 教程
  10. python 办公自动化-用python进行办公自动化都需要学习什么知识呢?