一、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比较的是两个字符串的内容是否相同
|