JAVAObject类常用方法

Object类

  • Object类是Java java.lang 包下的核心类,Object类是所有类的父类,任何一个类都直接继承或间接继承他;Object类可以显示继承,也可以隐式继承,以下俩种方式是一样的:
public class Zi extends Object{

}

public class Zi{

}
  • Object类构造方法

​ Object类中会有一个默认的无参构造方法:public Object(){};在所有的Java类中如果没有显式的写出构造方法,也同样会默认一个无参的构造方法.作为所有Java类的基类(Object自己除外),Object的构造方法是所有Java类创建对象时所必须调用的.

1.1Object常用方法

1.1.1 hash Code()方法
  • Object hashCode()方法用于获取对象的hash值

hashCode()方法的使用:

class HashCodeTest {
    public static void main(String[] args) {
 
        // Object 使用 hashCode()
        Object obj1 = new Object();
        System.out.println(obj1.hashCode()); 
 
        Object obj2 = new Object();
        System.out.println(obj2.hashCode());
 
        Object obj3 = new Object();
        System.out.println(obj3.hashCode()); 
    }
/*输出	225534817
		 1878246837
		 92933653
  */  
  • String 和 ArrayList 类使用 hashCode() 方法,String 和 ArrayList 类都继承了 Object,所以可以直接使用 hashCode() 方法:
import java.util.ArrayList;
 
class HashCodeTest1{
    public static void main(String[] args) {
 
        // String 使用 hashCode()
        String str = new String();
        System.out.println(str.hashCode()); // 0
 
        // ArrayList 使用 hashCode()
        ArrayList<Integer> list = new ArrayList<>();
        System.out.println(list.hashCode()); // 1
    }
}
//0    1
  • 如果两个对象相等,则它们的哈希值也是相等的:
class HashCodeTest2{
    public static void main(String[] args) {
        // Object 使用 hashCode()
        Object obj1 = new Object();
 
        // obj1 赋值给 obj2
        Object obj2 = obj1;
 
        // 判断两个对象是否相等
        System.out.println(obj1.equals(obj2)); // true
 
        // 获取 obj1 与 obj2 的哈希值
        System.out.println(obj1.hashCode()); // 225534817 
        System.out.println(obj2.hashCode()); // 225534817
 
    }
}
/*不同对象的,hashCode()一般来说不会相同。
	  	   但是,同一个对象的hashCode()值肯定相同。
		不是对象的实际地址值,可以理解为逻辑地址值*/
1.1.2 getClass()方法
  • Object getClass() 方法用于获取对象的运行时对象的类。
class GetClass{
    public static void main(String[] args) {
 
    // getClass() with Object
    Object obj1 = new Object();
    System.out.println("obj1 的类为: " + obj1.getClass());
 
    // getClass() with String
    String obj2 = new String();
    System.out.println("obj2 的类为: " + obj2.getClass());
 
    // getClass() with ArrayList
    ArrayList<Integer> obj3 = new ArrayList<>();
    System.out.println("obj3 的类为: " + obj3.getClass());
    }
}
/*
obj1 的类为: class java.lang.Object
obj2 的类为: class java.lang.String
obj3 的类为: class java.util.ArrayList
*/
1.1.3 toString方法
  • 1,toString()方法在Object类中定义,其返回值是String类型,返回类名和他的引用地址在进行与其他类型数据的连接操作时,自动调用tostring()方法。
    2,作用是返回对象字符串表现形式。建议所有子类重写此方法,这样返回的字符串更利于阅读。

    
    import java.util.Date;
     
    public class ToStringTest {
     
    	public static void main(String[] args) {
    		Date now = new Date();
    		System.out.println("now="+now);//相当于
    		System.out.println("now="+now.toString());
     
    	}
     
    }
    
  • 可以根据需要在用户自定义类型中重写tostring()方法

      如tostring类重写了tostring()方法,返回字符串的值
    
public class ToStringtest1{
 
	public static void main(String[] args) {
		String s=new String();
		s="hello";
		System.out.println(s);//相当于
		System.out.println(s.toString());
 
	}
 
}
1.1.4 equals()方法

“equals”:不能做基本类型的比较,引用类型如果不重写比较的是地址值,重写之后比较的是内容. #####

//重写equals方法
  public boolean equals(Object obj) {
  	Student s = (Student)obj;
  	//年龄是一个基本数据类型,基本数据类型是不能调方法的,只能直接去比较
  	return this.name.equals(s.name) && this.age == s.age;
  }

  /*
    equals方法,比较两个对象是否相等
    public boolean equals(Object obj){
       return (this == obj);
   }
    
    Object中的equals方法是比较对象的地址值,没有什么意义,我们 需要重写它。
    因为在开发中我们通常比较的是对象中的属性值,我们认为 相同属性是同一个对象,这样我们就需要重写equals方法。	 	    
   */
  public static void main(String[] args) {
  	Student s1 = new Student("张三", 23);
  	Student s2 = new Student("张三", 23);
  	//比较两个对象是否相等,false
  	System.out.println(s1 == s2);
  	//重写equals方法之后比较的是对象中的属性值,true
  	System.out.println(s1.equals(s2));
  }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值