1,Object类是所有java类的父类。
2,Object中native(本地)方法,是非java语言实现的,可能是c或c++语言实现的,当Object类调用native 方法时,JVM(java虚拟机)对其进行转化后调用。
如:public native int hashCode()非java code 实现,返回对象的Hash值(对象的唯一标示)。
3,toString 方法。
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode()); //这个就是toString方法。
}
当:
Object object;
System.out.print(object);// 输出对象时,结果会自动调用toString方法,返回getClass().getName() + "@" + Integer.toHexString(hashCode())格式字符串。
4,对象的比较 equals和==方法
public boolean equals(Object obj) {
return (this == obj); //比较两个对象是否相等。一般都会被子类重写 。
}
"==" 一般用于基本数据类型比较。
若用作两个引用对象比较,仅当引用变量引用同一个对象时,才返回true,否则false。
void EqualCompare()
{
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello"; //未使用new,s4引用既存的对象(编译器创建对象之前先进行检测"Hello"是否已经存
在,若存在,则返回原对象的引用)
System.out.println(s1.equals(s2)); // true x1行对象内容相同
System.out.println(s1 ==s2); // false 两变量引用不同对象
System.out.println(s3.equals(s4)); //true 两变量引用相同对象
System.out.println(s3 ==s4); // true 两变量引用相同对象
}
比较对象时,一般用equals()方法。
不同的类可方便的对该对象进行覆盖。
String类就覆盖了Object类的equals()方法,所以x1行输出true.
a==b 如果a,b引用同一对象,则返回true;
a.equals(b) 如果a对象内容和b对象内容相同,则返回true
如果未重载equals()方法的类对象使用该方法与另一个对象进行比较,则调用Object的equals()方法,仍然是对象的比较,返回值为false。