ホームページ  >  記事  >  Java  >  Javaオブジェクトクラスのメソッドの使い方

Javaオブジェクトクラスのメソッドの使い方

王林
王林転載
2023-04-18 18:13:11759ブラウズ

1. オブジェクト クラスの概要

オブジェクトは、Java によってデフォルトで提供されるクラスです。 Object クラスを除く、Java のすべてのクラスには継承関係があります。デフォルトでは、Object 親クラスを継承します。つまり、Object のリファレンスを使用して、すべてのクラスのオブジェクトを受け取ることができます。

例: Object を使用してすべてのクラスのオブジェクトを受け取る

class Person{}
class Student{}
public class Test {
    public static void main(String[] args) {
        function(new Person());
        function(new Student());
    }
    public static void function(Object obj) {
        System.out.println(obj);
    }
}
//执行结果:
Person@1b6d3586
Student@4554617c

したがって、開発中、Object クラスは最も上位に統合されたパラメータのタイプになります。ただし、Object クラスには明確に定義されたメソッドもいくつかあります。次のように:

Javaオブジェクトクラスのメソッドの使い方

ここでは 3 つのメソッドを示します: toString() メソッド、equals() メソッド、hashcode() メソッド

2. toString メソッドを書き換えます。 to print object

オブジェクトの内容を印刷したい場合は、Object クラスの toString メソッドをオーバーライドすることで実行できます。

toString() メソッドをオーバーライドする必要がある理由を以下に説明します。

次のコードは、Person オブジェクトを出力します:

public class Person {
    String name;
    String gender;
    int age;
    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;

    }
    public static void main(String[] args) {
        Person person = new Person("Jim","男", 18);
        System.out.println(person);
    }
}

実行結果と出力された内容を確認します。は、オブジェクトの特定の内容ではありません。

Javaオブジェクトクラスのメソッドの使い方

ここで println メソッドのソース コードを確認してください。ソース コードでは、String クラスの valueOf メソッドが呼び出されます。 valueOf のソース コードを見ると、メソッド本体が実際にあることがわかります。 toString メソッドが再度呼び出されます。

Javaオブジェクトクラスのメソッドの使い方

# 次に、toString の具体的な実装を見てみましょう。

Javaオブジェクトクラスのメソッドの使い方#getClass() .getName() は、このオブジェクトのランタイム クラス (Class) を返し、表現されるエンティティ (クラス、インターフェイス、配列クラス、基本型または void) の名前を返します。この Class オブジェクトを String 形式で取得します。

hashCode() メソッドは「アドレス」を返します。

Integer.toHexString(hashCode()) このオブジェクトのハッシュ コード値を取得します (int 型) 、ラッパー クラス Integer クラスを使用して、この int 型値のハッシュ コードを取得し、それを 16 進数の符号なし整数に変換し、変換された 16 進数の整数を文字列の形式で表現します。

したがって、出力関数 println印刷オブジェクトの具体的な内容を実現したい場合は、Object クラスの toString メソッドを独自のアイデアに従って書き換えるだけで済みます。

public class Person {
    String name;
    String gender;
    int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                '}';
    }

    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;

    }
    public static void main(String[] args) {
        Person person = new Person("xin","男", 21);
        System.out.println(person);
    }
}

実行結果:

Javaオブジェクトクラスのメソッドの使い方3. オブジェクトの比較はメソッドと等しい

Java では、== が比較される場合:

    If == の左側と右側が基本型変数であり、比較されるのは変数内の値が同じかどうかです。
  • == の左側と右側が参照型変数の場合、比較は、参照変数のアドレスが同じかどうかです。
  • オブジェクトの内容を比較したい場合は、オブジェクトの等しいメソッドを書き直す必要があります。これは、等しいメソッドも次のように比較するためです。以下は、equals メソッドのソース コードです:

Javaオブジェクトクラスのメソッドの使い方オブジェクト比較コード例:

class Person{
    private String name ;
    private int age ;
    public Person(String name, int age) {

        this.age = age ;
        this.name = name ;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false ;
        }
        if(this == obj) {
            return true ;
        }
        //不是Person类对象
        if (!(obj instanceof Person)) {
            return false ;
        }
        Person person = (Person) obj ; // 向下转型,比较属性值
        return this.name.equals(person.name) && this.age==person.age ;
    }

}

public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("xin", 20);
        Person p2 = new Person("xin", 20);
        Person p3 = new Person("rong", 21);

        System.out.println(p1.equals(p2));
        System.out.println(p1.equals(p3));

    }
}

実行結果:

##4. hashCode メソッドJavaオブジェクトクラスのメソッドの使い方

ハッシュコード メソッドは、メモリに格納されているオブジェクトの位置が同じかどうかを判断するために使用されます

# の機能ハッシュ テーブルの hashCode() は、オブジェクトのハッシュ コードを取得し、ハッシュ テーブル内のオブジェクトの位置を決定します。

hashCode メソッドのソース コード:

#このメソッドはネイティブ メソッドであり、最下層は C/C コードで記述されており、C/C コードでは観察できません。コンパイラ。

Javaオブジェクトクラスのメソッドの使い方 同じ名前と同じ年齢を持つ 2 つのオブジェクトは同じオブジェクトであり、同じ場所に保存されるべきであると考えられます。

以下のコードを見てください。 hashCode() メソッド、2 つのオブジェクトの内容は同じですが、結果のハッシュ値は異なります:

class Person {
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class TestDemo4 {
    public static void main(String[] args) {
        Person per1 = new Person("xin", 21) ;
        Person per2 = new Person("xin", 21) ;
        System.out.println(per1.hashCode());
        System.out.println(per2.hashCode());
    }
}

実行結果:

つまり、 2 つのオブジェクトを考えたい場合 2 つのオブジェクトが同じ内容を持ち、メモリ内のそれらの位置が等しい必要がある場合、hashCode() メソッドをオーバーライドする必要があります。

import java.util.Objects;

class Person {
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

public class TestDemo4 {
    public static void main(String[] args) {
        Person per1 = new Person("xin", 21) ;
        Person per2 = new Person("xin", 21) ;
        System.out.println(per1.hashCode());
        System.out.println(per2.hashCode());
    }
}
Javaオブジェクトクラスのメソッドの使い方実行結果:

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

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