黑马程序员技术交流社区
标题:
这个程序时怎么在String中重写equals是方法的
[打印本页]
作者:
lanbuohan
时间:
2013-5-22 22:05
标题:
这个程序时怎么在String中重写equals是方法的
class Test_B2
{
public static void main(String[] args)
{
//相当定义的一个字符串,字符串都相等。
String str1 = "hello";
String str2 = "hello";
if(str1 == str2)
{
System.out.println("str1 == str2");
}
else
{
System.out.println("str1 !== str2");
}
String str3 = new String("hello");
String str4 = new String("hello");
if(str3 == str4)
{
System.out.println("str3 == str4");
}
else
{
System.out.println("str3 !== str4");
}
if(str3.equals(str4))//
此处答案是true,难点。
{
System.out.println("str3.equals(str4) == true");
}
System.out.println("Hello World");
}
}
作者:
徐启坤
时间:
2013-5-22 22:11
String中的equals是Java中写好的,String类不能继承,所以你不能重写
作者:
高波
时间:
2013-5-22 22:16
这个地方时String的equals方法,重写了Object中的equals方法。可以在API中查到,下面是API中关于String equals方法的注解:
public boolean equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
覆盖:
类 Object 中的 equals
参数:
anObject - 与此 String 进行比较的对象。
返回:
如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
希望对你有用{:soso_e113:}
作者:
SOAR
时间:
2013-5-22 22:17
equals是所有类的父类Object中的一个方法,String已经重写了这个方法,你可以打开jdk的源码看看啊。你也可以自己重写。
作者:
lanbuohan
时间:
2013-5-22 22:35
自己又写得这成程序,大家看看,应该就是用String将equals重写,但是原理还不很明白,有人说这里还有哈希码的知识。
如果有哪个大牛明白原理,请告知小弟。
public class Test_B3
{
public static void main(String[] args)
{
String s1 = "sun java",s2 = "Sun Java";
System.out.println(s1.charAt(1));
System.out.println(s1.equals(s2));
String s3 = new String();
String s4 = new String();
System.out.println(s3.equals(s4));//结果是true
}
}
作者:
棉/mg花/x糖
时间:
2013-5-22 22:46
楼主,你主要是问什么?没弄明白,感觉你所问并不是标题处写的问题!!
作者:
火之意志
时间:
2013-5-22 23:13
首先,要明确“==”和equals()的区别,object类中的equals()方法是最原始的,它的原理就两个对象做“==”比较,看参考jdk1.7中src压缩包中的源码,也可以在eclipse中查看object类的equals()方法源码;而String类中的equals()方法是被重写过的,不再是做“==”单纯的地址比较,equals()方法是比较两个字符串对象的内容, String s3 = new String(); String s4 = new String();是两个对象,他们的地址值不同,s3==s4;这样写是false。但是s3,s4是被新创建的字符串对象,都是调用无参构造方法,也没有任何的赋值动作,所以他们都是空字符串对象,所以内容相同,所以 System.out.println(s3.equals(s4));//结果是true
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2