黑马程序员技术交流社区
标题:
Java中==和equals的区别是什么啊
[打印本页]
作者:
xp8812
时间:
2014-6-5 21:55
标题:
Java中==和equals的区别是什么啊
Java中==和equals的区别是什么啊,怎么感觉差不多的样子
作者:
杨韬略
时间:
2014-6-5 22:03
本帖最后由 杨韬略 于 2014-6-5 22:10 编辑
解答:“==”是指向内存地址类似于c的指针,equal(),才是比较两个字符串的内容,如下面这个程序所示。
public class Test5 {
public static void main(String[] args) {
String s = "abc";
s.substring(1);
s.replace("bc", "xyz");
System.out.println(s); //输出结果为abc,因为字符串一经创建是不能更改的,若要修改可以使用StringBuffer
String value = new String ("abc");
System.out.println(s == value);//输出结果为false,因为==逻辑运算符引向的是地址,而用equals就是比较值,跟c的指针是一个道理
System.out.println(s.equals(b));//输出结果为true
}
}
作者:
卞新浩
时间:
2014-6-5 22:19
== 是比较值 equals 比较对象里面的内容
作者:
塔罗
时间:
2014-6-5 22:27
class Person{}
作者:
四顾行者
时间:
2014-6-5 22:35
class MainDemo
{
public static void main(String[] args)
{
int i=5;
int b=5;
if(i==b)
System.out.println(true);
if(new Integer(b).equals(new Integer(i)))
System.out.println(true);
}
}
作者:
haohanlinyu
时间:
2014-6-5 22:54
equals方法判断对象的内容是否相等 ==是比较数值用的
作者:
\(^o^)/
时间:
2014-6-5 23:00
"=="比较的是内存地址是否相同,而equals比较的是字符串内容是否相同。比如 String x1=new String("abc");
String x2=new String("abc");
System.out.println(x1==x2);
System.out.println(x1.equals(x2));
结果:
false
true
分析:equals是比较值,==是比较地址 ,x1和x2值相同但是地址不同,只要new一个对象就产生一个地址。
比如 String x1="abc";
String x2="abc";
System.out.println(x1==x2);
System.out.println(x1.equals(x2));
结果:
true
true
分析:x1 x2指向同一个"abc",同一个"abc"的值和地址当然都相同了。
作者:
、海
时间:
2014-6-5 23:03
a==b比较的是a对象和b对象在内存所对应的地址,如果返回true,则说明a和b必定是指向同一个对象。a.equal(b)是比较a和b的值,如果返回true则说明a的值和b的值相同,但是注意的是返回值为true时 a和b可以不是同一对象
作者:
251638256
时间:
2014-6-5 23:25
:'(
==运算符判断指针值
equals方法判断堆对象内存值
作者:
黄宝宝
时间:
2014-6-6 09:32
楼上回答得很清楚!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2