Java String类的方法equals
**equal比较的是两个对象所表示的字符是否相等, 而 == 比较的是两个对象是否相等.**
/*
* 分析:s1.equals(s)只是比较两个对象中的字符是否相等, 与对象类型无关
* public boolean equals(Object anObject)
* 将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
*
*
* String s1 = " hello ";
* 这个只是一个引用,内存中如果有"hello "的话,s1就指向它,如果没有才创建
* 如果你以后还用到 "hello "这个字符串的话并且是这样用:
* String s1= " hello ";
* String s3 = " hello ";
* String s4 = " hello ";
* 这3个变量都共享一个字符串 " hello " ,hello是限定字符串,因此是s1==s3为true
* 而String s2 = new String( " hello ");
* 是根据 " hello "这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给s2
*/
class StringTest1
{
public static void main(String[] args)
{
String s1="hello";
String s2=new String("hello");
String s3 = "hello";
String s4 = new String("hello");
System.out.println(s1==s2); //false 尽管s1、s2的内容相同,但是它们是不同的字符串对象
System.out.println(s1==s3); //true 因为s1、s3指向相同的限定字符"hello"
System.out.println(s2==s4);
//false s4是根据 " hello "这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给s4,和s2不相同
if(s1.equals(s2)){
//将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true.
System.out.println("相等");
}
else{
System.out.println("不相等");
}
}
}