个人关于object的总结
/*
* 用输出语句直接输出对象的名称,其实底层调用了该对象的toString()方法。
*
* 如果我们认为某个类应该有某个功能,而我们在这个类中确没有方法,这个时候,就应该在其父类中查找。
* Student类,我们并没有看到有父类啊。
* 注意:任何类都直接或者间接继承自Object类。
*
* Object类的toString()方法:推荐自己重写toString()方法。
* public String toString():返回对象的字符串表示形式。
* 字符串的组成:
* getClass().getName() + '@' + Integer.toHexString(hashCode())
*
* public final Class<?> getClass():返回的Object类的运行时类。(反射)
* Class类下面有一个方法:public String getName() 返回某个类的完整路径名称。包括包名。
*
* Integer类有一个静态方法:
* public static String toHexString(int i)
* 返回给定参数的十六进制表示的字符串。
*
* public int hashCode():返回该对象的哈希码值。
* 是根据对象的地址值计算出来的一个对应的整数值。
* 可以理解为地址值。
* 举例:
* Student s = new Student();
*
* public Student getStudent()
* {
* return new Student();
* }
*
* public int getInt()
* {
* return 10;
* }
*
Object类的:
* public boolean equals(Object obj):默认就是比较对象的是否相等,比较的是地址值。
*
* 而一般来说,同一个类的不同对象,地址值肯定不同。所以,Object类的equals()的默认操作是没有意义。
* 所以, 一般我们会重写该方法比较类的成员变量值是否相同。(按照需求进行比较)
public int hashCode()
public final Class getClass()
public String toString()
public boolean equals(Object?obj)
protected void finalize()
protected Object clone()
*/
public class StudentTest {
public static void main(String[] args) {
// 创建学生对象
Student s = new Student();
s.setName("林青霞");
s.setAge(26);
// cn.itcast_01.Student@181ed9e
System.out.println(s);
// cn.itcast_01.Student@181ed9e
System.out.println(s.toString());
//toString()有些时候灵活度不高。这个时候,一般我们选择getXxx()方法
System.out.println(s.getName()+"---"+s.getAge());
}
}
|
|