toString方法和equals方法
一、toString方法
获得对象的一种字符串形式,默认的字符串格式为: 全类名@十六进制内存地址
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
print/println方法默认调用参数对象的toString()方法
public class BankAccount { private String name; private String sfz; public BankAccount(String name, String sfz) { super(); this.name = name; this.sfz = sfz; } //注解 是一种注释 是给JVM看的 //@Override 标准修饰的方法是一个重写的方法,如果不符合重写的语法,报错 @Override public String toString() { return "姓名:"+name+",身份证:"+sfz; } }
public static void main(String[] args) { BankAccount account = new BankAccount("jack","23010199901011111"); System.out.println(account); }
二、equals方法
先理解 == 的概念,比较两边的值是否相等
int i = 3; int j = 4; System.out.println(i==j); BankAccount account1 = new BankAccount("jack","23010199901011111"); BankAccount account2 = new BankAccount("jack","23010199901011111"); //比较两个引用的地址是否相同 System.out.println(account1==account2);
equals 指示某个其他对象是否与此对象“相等”。默认的比较规则是比较两个对象是否== ,程序员可以通过重写 equals自定义比较的规则。
//对BankAccout类的equals方法重写 ,两个银行账号比较身份证和姓名 相同,就是同一个账号
public class BankAccount { private String name; private String sfz; public BankAccount(String name, String sfz) { super(); this.name = name; this.sfz = sfz; } //注解 是一种注释 是给JVM看的 //@Override 标准修饰的方法是一个重写的方法,如果不符合重写的语法,报错 @Override public String toString() { return "姓名:"+name+",身份证:"+sfz; } @Override public boolean equals(Object obj) { if(this==obj) { return true; } if(obj instanceof BankAccount) { BankAccount ba = (BankAccount)obj; if(this.name.equals(ba.name)&&this.sfz.equals(ba.sfz)) { return true; } } return false; } }
public static void main(String[] args) { int i = 3; int j = 4; System.out.println(i==j); BankAccount account1 = new BankAccount("jack","23010199901011111"); BankAccount account2 = new BankAccount("jack","23010199901011111"); System.out.println(account1.equals(account2)); /*String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1==s2); //false //String类重写了equals方法,两个字符串的比较 ,应该比较的是内容。 System.out.println(s1.equals(s2)); //true */
字符串的equals比较的是两个字符串的内容是否相同