java string equal 与==的区别
关于String类中重写的equals方法
请先看下面这段代码:
public class EqualsTest {
public static void main(String[] args) {
EqualsTest e1 = new EqualsTest();
EqualsTest e2 = new EqualsTest();
System.out.println(e1 == e2);
System.out.println(e1.equals(e2));
String s1 = new String();
String s2 = new String();
System.out.println(s1.equals(s2));
EqualsTest e3 = e2;
System.out.println(e3.equals(e2));
}
}
其执行结果是:
false
false
true
true
大家知道“==”在java中如果用于两个对象的引用的话,那么只有当这两个引用指向同一块堆空间的话,才能返回TURE,EqualsTest类是继承Object类的,此时EqualsTest的对象s1调用的equals方法是父类Object类的方法,而Object源代码中的equals方法的方法体中是这么写的:
public boolean equals(Object o) {
return (this == o);
}
所以equals方法的实现原理与“==”操作符一样。返回false;
但是String类中重写了equals方法,他的方法体满足了:只要两个引用所指向的对象是两块含有一样字样的字符串的话,那么就返回true。
而最下面一个true的原因是:直接把e2的引用赋给了e3,所以两个引用指向同一块堆内存。所以e2 == e3,所以他的equals虽然没有重写,也是返回true;
转载于:https://blog.51cto.com/jeiofw/961901
java string equal 与==的区别相关推荐
- Java中equal和==的区别
equal和==均表示相等的意思,但是它们进行实际的相等的判定的时候,却有非常大的区别.这还得从JAVA的堆栈说起.初学者对他们的两者的概念的理解很容易模糊.在实际编程工作中就容易造成一些不容易发现的 ...
- JAVA中String与StringBuffer的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...
- Java中string与String区别_JAVA中String与StringBuffer的区别
JAVA中String与StringBuffer的区别 2009-12-3文字大小:大中小 在java中有3个类来负责字符的操作. 1.Character 是执行 单个字符操作的, 2.String ...
- Java中stringbutter_java中string与ButterString的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...
- 【翻译】Java中String, StringBuffer, StringBuilder的区别
2019独角兽企业重金招聘Python工程师标准>>> String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...
- string.Compare字符串比较函数中文详解以及与Equal、==的区别
Chinar blog :www.chinar.xin String 比较函数详解 本文提供全流程,中文翻译 助力快速理解 String 字符串比较函数的区别 为初学者节省宝贵的时间,避免采坑! Ch ...
- Java - String源码解析及常见面试问题
文章目录 Pre Q1: String 是如何实现的? Q2: String 有哪些重要的方法? 构造函数 equals() compareTo() [equals() vs compareTo() ...
- java const string_深入研究Java String
开始写 Java 一年来,一直都是遇到什么问题再去解决,还没有主动的深入的去学习过 Java 语言的特性和深入阅读 JDK 的源码.既然决定今后靠 Java 吃饭,还是得花些心思在上面,放弃一些打游戏 ...
- Java String intern()方法
引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...
最新文章
- 虚拟机管理你的服务器,全面解析VMware的虚拟机管理解决方案
- Python判断文件、文件夹是否存在,不存在则创建
- android应用可以访问/dev下设备节点
- java与c应用,Java和C应用程序之间的IPC
- typedef void(*Fun)(void);
- RabbitMQ—为什么使用信道channel
- Android学习之PopupWindow
- TTButton 的正确使用的方法
- -moz、-ms、-webkit
- 在ant中将依赖jar包一并打包的方法
- Mysql 演示示例存储过程
- Hibernate 懒加载 Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationExcept
- 游戏编程精粹1---数学技巧---可预测随机数---2
- Latex bare_jrnl模板报错:something‘s wrong--perhaps a missing\item. \end{thebibliography}
- 学习July博文总结——支持向量机(SVM)的深入理解(下)
- 亲自动手搭建微服务框架和测试环境-1-背景
- 二维码制作教程分享,大家一起来学习吧!
- android 9 vxp 闪退,XPrivacyLua限制了权限的应用无法打开
- AndroidStudio(Idea) 快捷键错乱,insert键乱入,复制粘贴查找快捷键无效
- vSphere Client无法连接vSphere server解决一例