资料
Object中的equals方法是用于检测一个对象是否等于另外一个对象,检测的方法是判断两个对象是否具有相同的引用。1。那就直接用==不就行了,要equals干什么?
2。
String s1 = "asdf";
String s2 = "asdf";
s1 == s2 返回false, 为什么??
但s1.equals(s2) 是返回true,这又是为什么呢?
Object中的equals方法是用于检测一个对象是否等于另外一个对象,检测的方法是判断两个对象是否具有相同的引用。1。那就直接用==不就行了,要equals干什么?
2。
String s1 = "asdf";
String s2 = "asdf";
s1 == s2 返回false, 为什么??
但s1.equals(s2) 是返回true,这又是为什么呢?
解决方案 »
- 问个很简单的问题 关于JAVA类里的成员变量
- 安装jdk1.5后和原来的jdk1.4冲突么?java -version居然还显示1.3.1,晕!盼解决方案
- 传递类型的问题
- 高分求教redhat9.0上数据库连接出现的问题 The Network Adapter could not establish the connection !
- 在几个JTabbedPane中如何设置显示的序号?
- 赋值语句的一点疑问
- 哪里有java api参考帮助,我要得是windows帮助格式的不是html格式的
- 操作系统中只可能有一套JVM在运行么?如何指定程序运行所使用的JVM?可以两个JVM共存么?
- 怎样将 double 型的8.8155699E7 在输出打印时显示为 8815569.9 或 8,815,569.9 谢谢
- OJ上的java代码为什么总是内存超限啊?有代码(最大连续子列和问题)
- 打字程序
- Java中有没有对应C++中的inet_toa()的方法?
equals比较的是内容
equals是判断两个变量或实例所指向的内存空间的值是不是相同
那这句话错了??
本人如此理解,错了勿砸!
s1==s2不可能返回false,返回的是true。
equals()的返回值则要根据具体类的equals()方法的实现来确定。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
{
String s1 = "asdf";
String s2 = "asdf";
if(s1 == s2)
{
System.out.println("true");
}
else
{
System.out.println("falst");
}
}
是这样理解吗??我试了下 返回true
String s1 = "asdf";
String s2 = "asdf";
s1==s1;//true 它们指向的是同一对象,同一内存地地
s1.equals(s2);//true
不可能返回的是false,
equals()方法:
这个方法最初是定义在Object类中的,方法应该是这样子的:public boolean equals(Object obj){ return this == obj;}
也就是说,在Object类中定义的equals()和“==”是一样的,都是比较引用变量是否相同的。
而在String类中,重写了这个equals()方法,不紧比较引用变量,也比较字符串的内容(看jdk的源代码),所以才出现你那样的情况。
class wrenwren {
public static void main(String args[])
{
String a = "cc";
String b = "cc";
System.out.println("a==b"+a==b);
}
}
我是这样验证的,结果既不是a==btrue,也不是a==bflase。
而是false,看了结果,我都没考虑a==b哪去了,就来这里问,实在不好意思。
例:String a="ab";
String b="ab";//重新创建一个对象,有新的内存.
String c=a;//引用a,和a引用了同一地址.
a.equals(b)==false;//由于有不同的引用所以返回false
a.equals(c)==true;//值和引用都相同.
(a==b)==true;//以下两个只判断值相等,所以都返回true.
(a==c)==true;
你这个错了a.equals(b)==false;//由于有不同的引用所以返回false
应该是true