分分钟让你了解String中的"=="和equals()区别

原创 2015年11月20日 12:35:17

情形一:

String s1= new String("hello");

String s2 = new String("hello");                                                                                

当我们使用new时,每次都会在内存中开辟一个新的空间存放对象的值,

“==”号比较的是s1,s2对象的内存首地址,equals比较的是内存中具体的值
所以(s1==s2)返回false;(s1.equals(s2))返回true;

如下图1所示:

                                                                                                     图1

情形二:

String s1= "hello";
String s2 = "hello";
字符串“="号赋值只有在遇到代码时才缓存到常量池中,
如上图两行代码,当String s1= "hello";执行时,先会在heap中的常量池(String pool)中查找有没有"hello"的字符串存在,如果存在,就返回字符串的首地址,
如果不存在,就在常量池中新建一个"hello",并返回字符串的首地址。我们可以看出,第一行代码是不存在,所以返回字符串的首地址。

当执行到String s2 = "hello";我们从常量池中发现"hello"已经存在,返回原字符串的内存首地址

所以(s1==s2),返回的是true;(s1.equals(s2))返回true;

如下图2所示:

                                                                                             图 2

情形三:

String s1= "hello";
String s2= new String("hello");

s1是存放的常量池中的"hello"的首地址,s2是new出来的对象,所以新建一块内存,存放的是新内存中"hello"的首地址。

所以(s1==s2),返回的是false;(s1.equals(s2))返回true;

如下图3所示:

 

                                                                                                          图 3

 

各位看官,困惑你们已久的String字符串中"=="与equals()方法的使用理解明白了吗?谢谢观看,下次再见!


 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

字节流、字符流、ascii、gb2312、gbk、gb18030、乱码、什么时候使用字节流,什么时候使用字符流,二者区别。分分钟透彻理解。

早先在 Java IO包里面出现的都是字节流,因为数据,无论是硬盘上的还是内存中的,都是字节,都是二进制数据10101的方式进行传输或保存的。 那么为什么后来又出现了个字符流的概念呢? 在我们处理数...

分分钟用上C#中的委托和事件

分分钟用上C#中的委托和事件 每一个初学C#的程序猿,在刚刚碰到委托和事件的概念时,估计都是望而却步,茫然摸不到头脑的。百度一搜,关于概念介绍的文章大把大把的,当然也不乏深入浅出的好文章。可...

程序猿入职秘籍大分享!分分钟走上人生巅峰

在很多人眼里,找工作就像选择人生伴侣,唯有两厢情愿才能一拍即合,对求职者来说,这家公司是否靠谱,是否适合自己工作、和自己发展方向一致,是否能达到自己的薪资要求等等是需要考虑的主要因素,当然了,对方的要...

分分钟带你搞定Android开发圆形头像

分分钟带你搞定Android开发圆形头像目前在应用开发中,矩形的头像基本没有了,大多是圆形或圆角矩形,本文简简单单轻轻松松帮你搞定圆形或圆角矩形的头像。 可以自定义控件实现,而本文使用的是第三方开源...

教你如何分分钟完爆“Bean 导入 Excel”

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Out...

分分钟手摸手带你做自己的maven库

写在前面并不是什么高端的东西,大神请忽略,不会的请看这里。可能实际的用处并不是很大,但是你学会了,就可以在不会的人面前装一把,哈哈!ps:这要是让认识我的人看到,会怎么想我o(╯□╰)o准备首先,你要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)