Todas las clases de los antepasados de clase de objeto de clase y objetos

clase Object (java.lang)

Nota: La clase ancestro de todas las clases de Java.

private static native void registerNatives();

static {
    registerNatives();
}
  • Define registerNatives método nativo, se registra la clase implemente todos los métodos nativos, además del método

    • método modificado de palabras clave nativa se llama método de localización es ponerse en contacto con el programa Java y el método de conexión sistema operativo host subyacente
  • Método llama al método para registrar el bloque estático estática local del código, la aplicación local de las acciones proceso de registro

    • Después se carga la clase, conveniente llamar método de localización, sin preocuparse por la realización del principio subyacente

    • Si se modifica la implementación del método nativo, se puede lograr mediante la re-llamar recarga el método de registro local actualizada

public final native Class<?> getClass();
  • Adquirir el tipo real de la instancia de objeto en la memoria

Ejemplo 1: adquirir el tipo real del objeto

Object obj = new Date();
System.out.println("实例对象实际类型:" + obj.getClass().getName());
//输出结果:实例对象实际类型:java.util.Date
public native int hashCode();
  • hash de valor de código instancia de clase de objeto, el valor es un valor basado en ciertas reglas relacionadas con los mapas de información objeto dentro.
  • Dado que los valores diferentes para diferente código hash de una instancia de objeto, se puede juzgar mediante la comparación del valor de código hash para el mismo objeto es un objeto de destino.
public boolean equals(Object obj) {
    return (this == obj);
}
  • Comparar el objeto actual y los objetos de entrada para la igualdad y devuelve true si es igual, de lo contrario falso.
  • "==" para comparar dirección de dos objetos en la memoria son los mismos. En la práctica, algunas clases tuvieron que reescribir este método, por ejemplo: clase String de la clase Math.
protected native Object clone() throws CloneNotSupportedException;

public interface Cloneable {}
  • crear rápidamente una copia de un objeto (clon).
  • El método fue modificado palabras clave protegidas, por lo que la clase debe heredar de la clase Object, e implementar la interfaz Cloneable a su uso. De lo contrario se producirá una CloneNotSupportedException excepción.
  • Una copia del objeto original no es una referencia al objeto, sino que crea un nuevo objeto del mismo contenido.
  • Aunque interfaz Cloneable no define ningún método, pero debe ser implementado cuando el objeto de clonación.

Ejemplo 2: Clonación del objeto Jane

public class MyClone implements Cloneable {
	
	private String name;
	
	public MyClone(String name) {
		this.name = name;
	}
    
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
    
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

	public static void main(String[] args) throws CloneNotSupportedException {
		MyClone obj = new MyClone("小明");
		MyClone obj1 = (MyClone) obj.clone();
		System.out.println("两个对象是否同一个对象:" + obj.equals(obj1));
        //输出结果:两个对象是否同一个对象:false
        System.out.println("克隆对象名称:" + obj1.getName());
        //输出结果:克隆对象名称:小明
	}

}
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  • Obtiene una representación de cadena del objeto, el valor predeterminado es "clase nombre de ruta completo @ representación hexadecimal del valor del código hash".
public final native void notify();

public final native void notifyAll();

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

public final void wait(long timeout, int nanos) throws InterruptedException {
    if (timeout < 0) {
        throw new IllegalArgumentException("timeout value is negative");
    }

    if (nanos < 0 || nanos > 999999) {
        throw new IllegalArgumentException(
            "nanosecond timeout value out of range");
    }

    if (nanos > 0) {
        timeout++;
    }

    wait(timeout);
}

public final void wait() throws InterruptedException {
    wait(0);
}

  • Notificar y métodos notifyAll utilizan para despertar a los procesos que esperan en el monitor de este objeto.
  • El método utiliza para establecer la espera de espera hilo. Para milisegundos de tiempo de espera indica la espera, nanosegundos nanos representa el valor de la espera adicional (en el rango entre 0 y 999.999).
protected void finalize() throws Throwable { }

  • recolector de basura listo para liberar la memoria la primera vez que va a llamar al método de finalización.

Objetos finales de clase (java.util)

Nota: Esta clase es final, y su constructor es privado. Esta clase representa las otras clases no pueden ser heredados o modificados.

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

public static boolean deepEquals(Object a, Object b) {
    if (a == b)
        return true;
    else if (a == null || b == null)
        return false;
    else
        return Arrays.deepEquals0(a, b);
}

//Arrays.deepEquals0方法
static boolean deepEquals0(Object e1, Object e2) {
    assert e1 != null;
    boolean eq;
    if (e1 instanceof Object[] && e2 instanceof Object[])
        eq = deepEquals ((Object[]) e1, (Object[]) e2);
    else if (e1 instanceof byte[] && e2 instanceof byte[])
        eq = equals((byte[]) e1, (byte[]) e2);
    else if (e1 instanceof short[] && e2 instanceof short[])
        eq = equals((short[]) e1, (short[]) e2);
    else if (e1 instanceof int[] && e2 instanceof int[])
        eq = equals((int[]) e1, (int[]) e2);
    else if (e1 instanceof long[] && e2 instanceof long[])
        eq = equals((long[]) e1, (long[]) e2);
    else if (e1 instanceof char[] && e2 instanceof char[])
        eq = equals((char[]) e1, (char[]) e2);
    else if (e1 instanceof float[] && e2 instanceof float[])
        eq = equals((float[]) e1, (float[]) e2);
    else if (e1 instanceof double[] && e2 instanceof double[])
        eq = equals((double[]) e1, (double[]) e2);
    else if (e1 instanceof boolean[] && e2 instanceof boolean[])
        eq = equals((boolean[]) e1, (boolean[]) e2);
    else
        eq = e1.equals(e2);
    return eq;
}

  • El método determina si los dos son iguales dos objetos. Si el objeto es una matriz, utilizando deepEquals método de comparación profundidad.
public static int hashCode(Object o) {
    return o != null ? o.hashCode() : 0;
}

public static int hash(Object... values) {
    return Arrays.hashCode(values);
}

//Arrays.hashCode
public static int hashCode(Object a[]) {
    if (a == null)
        return 0;

    int result = 1;

    for (Object element : a)
        result = 31 * result + (element == null ? 0 : element.hashCode());

    return result;
}

  • y el método hashCode para obtener un código hash valor hash objeto o una colección de objetos. Si el objeto es nulo, se devuelve 0.
  • El valor de la matriz de código hash de objetos (resultado = 31 * resultado + hash único valor de código de objeto).
public static String toString(Object o) {
    return String.valueOf(o);
}

public static String toString(Object o, String nullDefault) {
    return (o != null) ? o.toString() : nullDefault;
}

  • Obtener cadena que representa el objeto, si el objeto está vacío, se puede pasar a través del segundo parámetro de retorno para establecer la cadena por defecto.
public static <T> int compare(T a, T b, Comparator<? super T> c) {
    return (a == b) ? 0 :  c.compare(a, b);
}

  • Por el comparador está previsto para comparar el tamaño de dos objetos, para el mismo objeto si los dos objetos, se devuelve 0.
public static <T> T requireNonNull(T obj) {
    if (obj == null)
        throw new NullPointerException();
    return obj;
}

public static <T> T requireNonNull(T obj, String message) {
    if (obj == null)
        throw new NullPointerException(message);
    return obj;
}

public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
    if (obj == null)
        throw new NullPointerException(messageSupplier.get());
    return obj;
}

  • La determinación de si el objeto está vacía, si es, entonces a la configuración del contenido anormalidad de excepción NullPointerException vacías. Si está vacío, se devuelve el objeto original.
public static boolean isNull(Object obj) {
    return obj == null;
}

public static boolean nonNull(Object obj) {
    return obj != null;
}

  • Determinar si el objeto está vacía.
Liberadas dos artículos originales · ganado elogios 0 · Vistas 13

Supongo que te gusta

Origin blog.csdn.net/u011743790/article/details/104942246
Recomendado
Clasificación