toString 方法
package cn.itcast.demo;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/*重写toString方法,打印对象的属性*/
// @Override
// public String toString(){
// return "Person{name="+name+" age="+age+"}";
// }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package cn.itcast.demo;
/*类 Object 是类层次结构的根类。
每个类都使用 Object 作为超(父)类。
所有对象(包括数组)都实现这个类的方法。*/
public class Demo01ToString {
public static void main(String[] args) {
//Person类默认继承Object类
Person person = new Person("Tom",18);
String s = person.toString();
System.out.println(s);//若不重写,cn.itcast.demo.Person@1b6d3586
//直接打印对象名字就是调用对象的toString方法
//看一个类是否重写了toString,直接打印这个类即可,没重写时对象的地址值
System.out.println(s);//Person{name='Tom', age=18}
}
}
equals 方法
package cn.itcast.demo;
import java.util.Objects;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/*重写toString方法,打印对象的属性*/
// @Override
// public String toString(){
// return "Person{name="+name+" age="+age+"}";
// }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写equals方法,使之比较对象属性(name,age)
/* @Override
public boolean equals(Object obj) {
if(obj == this){
return true;
}
if(obj == null){
return false;
}
//使用向下转型,obj-->Person
if(obj instanceof Person) {
Person p = (Person) obj;
boolean b = this.name.equals(p.name) && this.age == p.age;
return b;
}
return false;//不是Person类型直接返回false
}*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;//空参数 使用反射技术判断o是否为Person类
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
package cn.itcast.demo;
/*public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}*/
public class Demo02Equals {
public static void main(String[] args) {
Person p1 = new Person("dlrb",18);
Person p2 = new Person("glnz",19);
Person p3 = new Person("dlrb",18);
boolean b = p1.equals(p2);
System.out.println(b);//false 比较的是地址
// p1 = p2;
// boolean c = p1.equals(p2);
// System.out.println(c);//true
boolean c = p1.equals(p3);
System.out.println(c);//true
}
}
package cn.itcast.demo;
import java.util.Objects;
public class Demo03Objects {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "ABC";
boolean b = s1.equals(s2);
System.out.println(b);//false
/*Objects类的equals方法可以避免空指针异常*/
boolean b2 = Objects.equals(s1, s2);
System.out.println(b2);
}
}