1.toString
2.==与equals方法
1.toString方法
1.1 toString源码
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
在Object类中定义类toString方法,返回值是String类型。默认返回类名+@+16进制的的hashcode
1.2 toString()测试与重写
class Person2 {
String name;
int age;
}
public class TesttoString {
public static void main(String[] args) {
Person2 p2 = new Person2();
System.out.println(p2);
}
}
输出结果:
cn.yan.oo.Person2@61bbe9ba
重写toString方法
class Person2 {
String name;
int age;
public Person2(String name, int age) {
this.name = name;
this.age = age;
}
//重写toString方法
public String toString(){
return "名称:"+name+",年龄:"+age;
}
}
public class TesttoString {
public static void main(String[] args) {
Person2 p2 = new Person2("yan",18);
System.out.println(p2);
}
}
输出结果:
名称:yan,年龄:18
2.==与equals方法
- ==:代表双方是否相同。如果是基本类型,则表示值相同。如果是引用类型,则表示地址相等。
- equals:默认是比较两个对象的hashcode。是同一个对象的引用时返回true,否则返回false。
equals就是调用的==来判断两个对象是否相同。可以自己重写equals方法来改变判断方式
//重写equals
class Person3{
int id;
String name;
public Person3(int id, String name) {
this.id = id;
this.name = name;
}
// 重写equals方法
public boolean equals(Object obj){
if(obj==null) {
return false;
}else{
if(obj instanceof Person3){
Person3 c = (Person3) obj;
if(this.id==c.id){
return true;
}
return false;
}
return false;
}
}
}
public class TestEquals {
public static void main(String[] args) {
Person3 p1 = new Person3(1, "yan");
Person3 p2 = new Person3(1, "yan");
System.out.println(p1==p2);
System.out.println(p1.equals(p2));
}
}
网友评论