package day01;
import java.util.Arrays;
public class ObjectDemo {
public static void main(String[] args) {
int[] ary = {1,2,3};
//此处默认调用Object类中的toString()方法
System.out.println(ary/*.toString()*/);
//输出ary数组的内容
System.out.println(Arrays.toString(ary));
String s = "abc";
String s3 = "abc";
/*
* String类型的字面量保存在内存的常量池中
* 常量池有常量优化机制,会把相同的字面量
* 优化同一个,所以s和s3引用的是同一个"abc"
*/
System.out.println(s==s3);//true
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1==s2);//false
/*
* String类已经重写Object类中的equals()
* 重写之后的equals()比较的是两个字符串的
* 内容是否相等
*/
System.out.println(s1.equals(s2));//true
int[] ary1 = {1,2,3};
System.out.println(ary==ary1);//false
//此处默认调用Object类中的equals()
System.out.println(ary.equals(ary1));//false
Aoo a1 = new Aoo(23);
Aoo a2 = new Aoo(23);
System.out.println(a1==a2);//false
System.out.println(a1.equals(a2));//true
System.out.println(a1.hashCode()==a2.hashCode());
}
}
class Aoo{
int age;
public Aoo(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Aoo other = (Aoo) obj;
if (age != other.age)
return false;
return true;
}
//重写Object类中的equals()
// @Override
// public boolean equals(Object obj) {//this
// if(obj==null) {
// return false;
// }
// if(this==obj) {
// return true;
// }
// if(obj instanceof Aoo) {
// Aoo aoo = (Aoo)obj;
// return this.age==aoo.age;
// }
// return false;
// }
}