对==与equals的比较的理解

举例:

String s1 = "abc";

String s2 = new String("abc");

String s3 = new String("abc");

System.out,println(s1==s2); //false

System.out,println(s1.equals(s2)); //true

System.out,println(s2==s3); //false

System.out,println(s2.equals(s3)); //true

为什么呢?(字符串最大特点,一旦被  初始化 就不可以改变了。(理解为:开辟的内存空间))

我们深入的去分析一下s1与s2两个对象

s1相当于开辟了一个内存空间(但是java常量池里面有装着一个很常见的常量,所以s1仅仅只是把地址指向了常量池已经开辟的内存地址“abc”),里面装着 “abc” .

s2相当于也开辟了一个新的内存空间叫(new String()底层我排序不太清楚),然后把s2的地址有指向了“abc”.

s3相当于也重新又开辟了一个新的内存空间叫(new String()底层我排序不太清楚),然后把s3的地址有指向了“abc”.

==理解为:比较的是内存空间(也就是第一次的内存地址)

equals理解为:比较的是最终的内存指向。

是不是很好理解呢?我想我们一看就应该很清楚明白晓得了最终的答案了

还有一个问题就是:如果我比较对象呢?

比如:

class People{

String name;

People(String name){

 this.name = name;

}

}

 People p1 = new People("小头");

 People p2 = new People(“小头”);

我们从上面的分析的过程与结论对比:

很明显:

System.out,println(p1==p2); //false

System.out,println(p1.equals(p2)); //false

我们分析第一个==:他们的内存空间不一样,对吧?也就是一个的内存地址不一样。

我们分析第一个equals:最终指向的内存地址也不一样,对吧?因为他们最终的内存地址就是他们自己开辟的那个内存空间的地址。(name仅仅只是一个属性值而已!)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏不想当开发的产品不是好测试

java中int和Integer对比的一些坑

Integer是int的包装类,int的默认值是0,而Integer的默认值是null(jdk1.5的新特性 自动装箱和拆箱,Integer.valueOf()...

761
来自专栏jeremy的技术点滴

实例变量的懒初始化

3044
来自专栏程序员宝库

Java 中整型的缓存机制

本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习...

773
来自专栏Kevin-ZhangCG

[ SSH框架 ] Struts2框架学习之三(OGNL和ValueStack值栈学习)

2096
来自专栏用户2442861的专栏

理解java Class类

http://blog.csdn.net/bingduanlbd/article/details/8424243/

421
来自专栏吾爱乐享

java之学习Integer的自动装箱和自动拆箱(JDK5新特性)

983
来自专栏nnngu

016 Java中的动态代理

代理 代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被...

35110
来自专栏Porschev[钟慰]的专栏

开发中巧用Enum枚举类型

在实际开发中,在数据库表设计中,我们往往习惯于用一个Int类型的State字段去表示数据的状态,这个字段很方便去表示这条数据的状态,但是又不愿意去建一张这个St...

1917
来自专栏行者常至

JavaBean 浅析

概念:JavaBean是一种JAVA语言编写成的可重用组件。JavaBean的类必须是具体的和公开的,并且具有无参数的构造器。

782
来自专栏Ryan Miao

Java复习3-类的继承

本次学习面向对象设计的另外一个基本概念:继承(inheritance)。这是Java程序设计中的一项核心技术。另外,还要学习反射(reflection)的概念。

872

扫码关注云+社区