Object:所有类的超类

Posted mayzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object:所有类的超类相关的知识,希望对你有一定的参考价值。

  Object类是所有类的始祖,但是不用显示的用extends关键字,如果没有extends任何类,Object就会被认为是这个类的超类。

  在Java中,只有基本类型(byte、short、char、int、long、float、double、boolean)不是对象。但是基本类型数组都是拓展于Object类。

Object类中常用的方法:

    public boolean equals:用于检测一个对象是否等于另外一个对象,在Object类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用。

    instanceof:是Java的一个二元操作符,主要用于判断子类是否为父类的实现

    在Java中包含了150多个equals方法的实现,包括使用instanceof、getClass、捕获ClassCastException等等;

  public native int hashCode方法:

    hashCode(散列码)native方法,是由对象导出的一个整型值。散列码是由对象hash算法得来的。如果x和y是两个不同的对象,x.hashCode()基本上不等于y.hashCode()。hashCode的值为对象的存储地址;

  public String toString方法:

    用于返回表示对象值的字符串,一般在建entity类时可以重写此方法,因为直接调用object类的toString方法获得的字符串是:类名[email protected]+哈希编码;数组也需要重写toString方法:类型缩写[email protected]+哈希编码;

  public final native Class<?> getClass方法:final native方法,返回包含对象信息的类对象。包路径加类名;

  private static native void registerNatives();这需要学习JNI(JavaNative Interface);

  static {

    registerNatives();

  }

  protected native Object clone() throws CloneNotSupportExecption;

  使用这个方法需要实现Cloneable接口,重写子类clone方法调用父类clone方法

  

package fuxi;

import java.util.Date;

public class Employee implements Cloneable {
	private String name;
	private double salary;
	private Date hireDay;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	public Date getHireDay() {
		return hireDay;
	}

	public void setHireDay(Date hireDay) {
		this.hireDay = hireDay;
	}

	@Override
	public String toString() {
		return "Employee [name=" + name + ", salary=" + salary + ", hireDay=" + hireDay + "]";
	}

	public Employee(String name, double salary, Date hireDay) {
		this.name = name;
		this.salary = salary;
		this.hireDay = hireDay;
	}

	public Employee() {
		super();
	}
	/**默认的是protected访问,需要改成public,在这个方法中没有克隆所有可变域,这是浅拷贝*/
	@Override
	public Employee clone() throws CloneNotSupportedException {
		return (Employee)super.clone();
	}
       /**深拷贝,可变域都要拷贝*/
	@Override
	public Employee clone() throws CloneNotSupportedException {
                 Employee cloned = (Employee) super.clone();
                 cloned.hireDay = (Date) hireDay.clone();
		return cloned;
	}
	
}

 

  

 

 

以下是多线程相关的知识:

  public final native void notify():

  public final native void notifyAll():

  public final native void wait() throws InterruptedException:

  public final native void wait(long timeout) throws InterruptedException:

  public final native void wait(long timeout,int nanos) throws InterruptedException:

  protected void finalize() throws Throwable{}

  

 

以上是关于Object:所有类的超类的主要内容,如果未能解决你的问题,请参考以下文章

object 类

李瑞红201771010111

hashCode()和equals()区别

Object类的方法

Java1.8基础学习之Object类

Java 三章错题