ホームページ  >  記事  >  Java  >  Java オブジェクト クラスのメソッド インスタンスの分析

Java オブジェクト クラスのメソッド インスタンスの分析

王林
王林転載
2023-04-18 17:49:051068ブラウズ

1.equals メソッド

1.API の等しいメソッドの概要

Java オブジェクト クラスのメソッド インスタンスの分析

2.== とquals の比較

  • == 基本型と参照型の両方を判定できます 基本型を判定する場合は値が等しいかどうかを判定します 参照型を判定する場合はアドレスが等しいかどうかを判定しますつまり、それらが同じオブジェクトであるかどうかを判断します。

  • equals メソッドは、Object クラスのメソッドです。参照型のみを決定できます。デフォルトでは、アドレスが等しいかどうかが決定されます。このメソッドは、多くの場合、サブクラスでオーバーライドされます。書き換えた後、内容が等しいかどうかを判定します。

Object、String、IntegerのequalsメソッドのJDKソースコードを見ることができます。

Object o = new Object();
o.equals(1);//Object类中的equals方法
System.out.println("hello".equals("hello"));//String中的equals方法
Integer integer = new Integer(5);
System.out.println(integer.equals(5));//Integer中的equals方法
//将光标放在equals方法上,按Ctrl同时按鼠标左键,就可跳转到String和Integer中的equals方法的JDK源码。
//Object类中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判断是不是当前对象
}
//String类中重写的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判断是不是当前对象
        }
        if (anObject instanceof String) {//判断当前类型是不是字符串类型
            String anotherString = (String)anObject;//向下转型
            int n = value.length;//保存传入字符串的长度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])//一个一个字符比较
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
 //Integer类中重写的equals方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {//判断当前类型是不是Integer类型
            return value == ((Integer)obj).intValue();//向下转型
        }
        return false;
    }

2.hashCode メソッド

1.API の hashCode メソッドの概要

Java オブジェクト クラスのメソッド インスタンスの分析

2.ハッシュ構造によるコンテナの効率の向上効率。

3. 2 つの参照が同じオブジェクトを指している場合、ハッシュ値は同じですが、異なるオブジェクトを指している場合、ハッシュ値は異なります。

4. ハッシュ値は主にアドレスに基づきますが、ハッシュ値がアドレスと同等であることはできません。

3.toString メソッド

1.API の toString メソッドの概要

Java オブジェクト クラスのメソッド インスタンスの分析

2.デフォルトの戻り値: 完全なクラス名 (パッケージ名)クラス名) ハッシュ値の @hex 値。

3. toString メソッドはオブジェクトのプロパティを返すためにオーバーライドされることがよくあります。

4. オブジェクトが直接出力される場合、デフォルトで toString メソッドが呼び出されます。

//JDK中的toString方法源码
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    //返回全类名(包名+类名)+@+哈希值的十六进制
    }
//重写toString方法
 @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }//往往重写toString方法,用于返回对象属性。

4.finalize メソッド

1.API の Finalize メソッドの概要

Java オブジェクト クラスのメソッド インスタンスの分析

2.オブジェクトがリサイクルされるとき、システムは自動的にこのオブジェクトの Finalize メソッドを呼び出します。サブクラスはこのメソッドをオーバーライドし、リソースを解放するためにいくつかの操作を実行できます。

3. オブジェクトに参照がない場合、jvm はガベージ コレクション メカニズムを使用してオブジェクトを破棄し、オブジェクトを破棄する前に Finalize メソッドが呼び出されます。

4. ガベージ コレクション メカニズムの呼び出しはシステムの GC アルゴリズムによって決定され、System.gc() を通じてアクティブにトリガーすることもできます。

以上がJava オブジェクト クラスのメソッド インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。