分分钟让你了解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的方式进行传输或保存的。 那么为什么后来又出现了个字符流的概念呢? 在我们处理数...

String中==与equals区别验证

  • 2011年11月09日 12:26
  • 8KB
  • 下载

Mockplus教程:分分钟搞定APP首页原型设计

Mockplus是一款快速原型设计工具,支持包括APP原型在内的多种原型与线框图设计。除了快速,Mockplus广受欢迎更因为它极低的上手门槛。今天小编就为大家展示如何用Mockplus在3分钟内完成...
  • jongde1
  • jongde1
  • 2017年07月11日 16:42
  • 1073

android分分钟打几百个渠道包

  • 2015年01月05日 18:35
  • 10KB
  • 下载

分分钟实现梦想 —— 两种快速打造App的方法

分分钟实现梦想 —— 两种快速打造App的方法 几年前,做App还是土豪和移动开发者的专利。移动开发者使用Java或者C++这类开发工具,将一行行代码变成可以被手指轻松触控的应用。土豪们花钱雇佣这...

网络安全 天天备份分分钟垮掉

  • 2017年06月10日 17:18
  • 23KB
  • 下载

分分钟教你搭建一个个人博客!

目录: 1.安装Hexo2.部署Hexo3.Hexo命令4.一些报错处理5.博客管理6.插件(RSS、Sitemap)7.评论设置8.404页面9.统计10.更新11.总结12.参考引用13.搭建博...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分分钟让你了解String中的"=="和equals()区别
举报原因:
原因补充:

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