>  기사  >  Java  >  Java 객체 클래스를 사용하는 방법

Java 객체 클래스를 사용하는 방법

WBOY
WBOY앞으로
2023-05-13 17:13:141405검색

    1.equals 메소드

    == 연산자

    기본 유형과 참조 유형을 모두 결정할 수 있는 비교 연산자

    기본 유형을 결정했다면 값이 같은지 여부를 결정합니다

    결정하면 그런 다음 주소가 동일한지, 즉 동일한 객체인지 판단합니다.

    equals

    는 객체 클래스의 메소드로, 참조 유형

    소스 코드와 동일합니다.

    public boolean equals(Object obj) {
        return (this == obj);
    }

    객체 클래스에서 equals 메소드는 객체의 주소가 동일한지(동일한 객체인지) 확인하는 것임을 분명히 알 수 있습니다

    그러나 다른 데이터 유형 클래스는 equals 메소드를 재정의합니다. String 클래스 재작성: (두 문자열의 값이 동일한지 확인)

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        return (anObject instanceof String aString)
                && (!COMPACT_STRINGS || this.coder == aString.coder)
                && StringLatin1.equals(value, aString.value);
    }

    예:

    String str1 = new String("hello");
    String str2 = new String("hello");
    System.out.println(str1 == str2); // false
    System.out.println(str1.equals(str2)); // true

    2.hashCode

    해시 구조로 컨테이너의 효율성 향상

    두 개의 참조 지점이 있는 경우 동일한 객체에 대해 해시 값은 동일해야 하며(충돌 없이) 그 반대도 마찬가지입니다

    ha 해시 값은 주소에서 왔지만 주소에서 옵니다.

    Demo:

    // hashCode
    A a = new A();
    A a1 = new A();
    A a2 = a;
    System.out.println(a.hashCode());
    System.out.println(a1.hashCode());
    System.out.println(a2.hashCode());
    ------------------------------

    Output:

    1324119927
    990368553
    1324119927

    3.toString

    객체의 문자열 표현을 반환합니다

    소스 코드:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    예:

    // toString
    A a3 = new A("dahe",25,"安全服务工程师");
    System.out.println(a3.toString());

    출력:

    classes.A@4162934 6
    패키지 이름.클래스 이름@hex hashCode

    이제 클래스의 toString 메소드(템플릿)를 다시 작성합니다.

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

    위를 다시 실행합니다. 이제 코드는 다음을 출력합니다.

    A{name='dahe', age=25, job='安全服务工程师'}

    또한 객체를 직접 출력하면 toString 메소드가 직접 호출됩니다. 기본적으로:

    System.out.println(a3);

    출력:

    A{name='dahe', age=25, job='Security Service Engineer'}

    4.finalize

    객체가 재활용되면 시스템이 자동으로 객체의 finalize 메서드를 사용하면 하위 클래스에서 이 메서드를 재정의하고 일부 작업을 수행하여 리소스를 해제할 수 있습니다.

    참고: JDK18. 마무리는 더 이상 사용되지 않습니다. 시스템의 기본 리소스를 사전에 해제하는 데 도움이 될 수 있지만 솔직히 말해서 Java는 메모리를 자동으로 관리하므로 도움이 되지 않으면 잠재적인 시스템 보안 위험이 발생할 수 있습니다. 이므로 제거될 예정입니다.

    예:

    // finalize
    A a4 = new A("dh",33,"架构师");
    a4 = null; // 这是a4成为了垃圾,垃圾回收器就会回收对象
    // 在销毁对象之前,会调用对象的finalize方法
    // 程序员就可以在这个方法中写入自己的业务,释放资源

    최종화 방법 재정의:

    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁对象");
    }

    또한 가비지 수집기를 적극적으로 실행할 수도 있습니다.

    System.gc(); // 主动调用垃圾回收器

    위 내용은 Java 객체 클래스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제