您的位置:首页 > 编程语言 > Java开发

Java中equals与"=="的使用区别

2014-03-05 11:46 579 查看
在使用equals和“==”判断变量是否相等时,老是犯迷糊。有时候忽然间就不知道该用谁。所以今天特意做一下笔记。

public static void main(String[] args) {
// TODO Auto-generated method stub

//指向常量池同一个字符串
String aa="longsan";
String bb="longsan";
System.out.println(aa==bb);
System.out.println(aa.equals(bb));
System.out.println("=====================================================");

//一个指向常量池,一个指向栈区
String cc="longsan";
String dd=new String("longsan");
System.out.println(cc==dd);
System.out.println(cc.equals(dd));
System.out.println("=====================================================");

}


输出:

true
true
=====================================================
false
true
=====================================================


解释说明:

因为第一个示例中,aa和bb都指向常量池中的同一个字符串"longsan",而cc指向堆区中常量"longsan",dd却指向栈区中的对象new String("longsan"),由此可以说明,equals在判断字符串时,只是判断它们的值是否相同。“==”在判断字符串时,是判断它们是否指向同一个存储地址,即同一个对象。但是在非字符串对象的使用是,equals和“==”的用法相同。因为String重写了equals方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: