==和equals()的区别
2015-08-09 21:56
211 查看
JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
if (s1 == s2)
{System.out.println("s1 == s2");}
else
{System.out.println("s1 != s2");}
if (s1.equals(s2)) {System.out.println("s1 equals s2");}
else{
System.out.println("s1 not equals s2");}
}
}
. 字符串缓冲池
原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1
将s2引用s1所引用的对象"Monday"
第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?
![](file:///C:/Users/hzm/AppData/Local/YNote/data/hongzongmin@163.com/e35cadd00acd49cc8d027e55f3192e37/clipboard.png)
![](http://img.blog.csdn.net/20150809220714949?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
以上是我做的一个小实验,由于StringBuffer没有重写equals()方法,所以比的还是地址,所以a==b为false,其他同理
public class TestString {
public static void main(String[] args) {
String s1 = "Monday";
String s2 = new String("Monday");
if (s1 == s2)
{System.out.println("s1 == s2");}
else
{System.out.println("s1 != s2");}
if (s1.equals(s2)) {System.out.println("s1 equals s2");}
else{
System.out.println("s1 not equals s2");}
}
}
. 字符串缓冲池
原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1
将s2引用s1所引用的对象"Monday"
第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?
![](file:///C:/Users/hzm/AppData/Local/YNote/data/hongzongmin@163.com/e35cadd00acd49cc8d027e55f3192e37/clipboard.png)
以上是我做的一个小实验,由于StringBuffer没有重写equals()方法,所以比的还是地址,所以a==b为false,其他同理
相关文章推荐
- 开发者,你是如何做到高效开发的
- 动态连接库 DLL 解释
- OpenCV的支持向量机SVM的程序
- java的反射原理与Spring的自动注入(转载)
- Java的垃圾回收机制笔记
- 2015阿里移动推荐算法大赛总结
- 2015华为校园招聘机试题+1道2013年网易校园招聘笔试题
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- N皇后问题
- git学习之旅(六)——github远程服务器
- poj 2586 Y2K Accounting Bug
- 计算机视觉的主页、博客清单
- Java图形化界面
- 计蒜客 难题题库 020 跳跃游戏二
- 依赖注入与控制反转的理解
- java abstract与interface解析
- Python的赋值,浅拷贝与深拷贝
- Python的多线程与多进程实践
- (android)EventBus实战
- 面试知识储备:新浪微博OAuth2.0授权认证