ToString 方法 和equals 方法,tostringequals
分享于 点击 46622 次 点评:62
ToString 方法 和equals 方法,tostringequals
ToString方法有4点:
1:所有的类都继承了Object类
2:Object类中的ToString方法 返回的是类名和对象的哈希值
3:System.out.println(类对象名);
实际返回的是该对象的ToString方法
4:实现代码,一般都是子类重写父类的ToString方法.
何时重写equals方法:
如果一个类构造出不同内存的2个对象,如果他们的值相等,我们也会认为这2个对象也相等. 但是在Object equals()方法中,只有2个对象是同一快内存的时候才返回true,这时子类就要重写父类的equals()方法.
class A{
public int i;
public A(int i){
this.i=i;
}
}
public class TestStringEquals {
public static void main(String[] args) {
A aa1=new A(2);
A aa2=new A(2);
System.out.println(aa1.equals(aa2));//调用的是父类的equals方法
if(aa1==aa2)
System.out.println("aa1和aa2相等");
else
System.out.println("aa1和aa2不相等");//结果输出这个 不相等
System.out.println(aa1); //输出的是 类名和对象的哈希值 A@
System.out.println(aa2); //输出的是 类名和对象的哈希值 A@
}
}
/*
本程序讲解了,调用父类equals方法 是2个不同内存比较,结果不相等.返回flase
子类重写父类的equals方法 是比较2个对象在内存中的值是否想等 结果相等,返回true
*/
/*
== 与 equals()区别
*/
public class TestString_1 {
public static void main(String[] args) {
String str1="hello";
String str2="hello"; //str1和str2都指向了匿名对象"hello"
if(str1 == str2) {//判断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 ){//判断str3和 str4指向是否相同的地址
System.out.println("str3 == str4");
}
else{
System.out.println("str3 != str4");
}
if(str3.equals(str4)){//判断str3和 str4所引用的对象是否相同
System.out.println("str3.equals(str4)==true");
}
else{
System.out.println("str3.equals(str4)!=true");
}
}
}
/*
运行结果:
str1==str2 //判断str1和 str2本身所占内存的值是否相等
str3 != str4
str3.equals(str4)==true
str1.equals(str2) 比较本身所在内存的值是否相同,在内存本身的值是相同的,
如果调用父类的Object中的equals()方法却是返回false
如果子类重写父类的中的equals()方法却是返回true
equals
public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
覆盖:
类 Object 中的 equals
参数:
anObject - 与此 String 进行比较的对象。
返回:
如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
另请参见:
compareTo(String), equalsIgnoreCase(String)
*/
相关文章
- 暂无相关文章
用户点评