logo

Java의 객체 클래스

객체 클래스 Java에서는 다음 위치에 있습니다. java.lang 패키지.

JS 교체
  • 모든 클래스는 Object 클래스에서 직접 또는 간접적으로 파생됩니다. 클래스가 다른 클래스를 확장하지 않는 경우 해당 클래스는 해당 클래스의 직계 자식 클래스입니다. 자바 객체 클래스 그리고 다른 클래스를 확장하면 간접적으로 파생됩니다.
  • Object 클래스는 다음과 같은 여러 메서드를 제공합니다. toString()은 같음() 해시코드() 그리고 다른 많은 사람들.
  • Object 클래스는 모든 Java 프로그램에서 상속 계층의 루트 역할을 합니다.

여기서 우리는 toString() 그리고 해시코드() Object 클래스의 메소드 클래스에 대한 사용자 정의 문자열 표현을 제공하기 위해 .

Java
// Java Code to demonstrate Object class class Person {  String n; //name  // Constructor  public Person(String n) {  this.n = n;  }  // Override toString() for a   // custom string representation  @Override  public String toString() {  return 'Person{name:'' + n + ''}';  }  public static void main(String[] args) {    Person p = new Person('Geek');    // Custom string representation  System.out.println(p.toString());    // Default hash code value  System.out.println(p.hashCode());   } } 

산출
Person{name:'Geek'} 321001045 

설명: 위의 예에서는 toString() 제공하는 방법 Person 클래스의 사용자 정의 문자열 표현 그리고 해시코드() 객체의 기본 해시 코드 값을 표시하는 메서드입니다.



객체 클래스 메서드

Object 클래스는 다음과 같은 여러 메서드를 제공합니다.

  • toString() 메서드
  • hashCode() 메서드
  • 같음(Object obj) 메서드
  • finalize() 메소드
  • getClass() 메서드
  • 클론() 메서드
  • wait() inform() informAll() (동시성 메서드)
Java의 객체 클래스 메소드' title=

1. toString() 메소드

그만큼 toString() 객체의 문자열 표현을 제공하고 객체를 문자열로 변환하는 데 사용됩니다. Object 클래스의 기본 toString() 메소드는 객체가 인스턴스인 클래스 이름, 기호 문자 '@' 및 객체 해시 코드의 부호 없는 16진수 표현으로 구성된 문자열을 반환합니다.

메모: 객체 참조를 인쇄하려고 할 때마다 내부적으로 toString() 메서드가 호출됩니다.

예:

공개 수업 학생 {

공개 문자열 toString() {

'학생 개체'를 반환합니다.

}

}

설명: toString() 메소드는 Student 객체의 사용자 정의 문자열 표현을 반환하도록 재정의되었습니다.

2. hashCode() 메소드

모든 객체에 대해 JVM은 해시코드인 고유 번호를 생성합니다. 고유한 개체에 대해 고유한 정수를 반환합니다. 이 메서드에 대한 일반적인 오해는 hashCode() 메서드가 올바르지 않은 개체의 주소를 반환한다는 것입니다. 알고리즘을 사용하여 객체의 내부 주소를 정수로 변환합니다. hashCode() 메소드는 다음과 같습니다. 토종의 Java에서는 객체의 주소를 찾는 것이 불가능하기 때문에 C/C++와 같은 기본 언어를 사용하여 객체의 주소를 찾습니다.

hashCode() 메소드 사용:

컬렉션의 개체를 검색하는 데 사용되는 해시 값을 반환합니다. JVM(Java Virtual Machine)은 객체를 HashSet HashMap Hashtable 등과 같은 해싱 관련 데이터 구조로 저장할 때 해시코드 방식을 사용합니다. 해시코드를 기반으로 객체를 저장하는 가장 큰 장점은 검색이 쉽다는 점입니다. 

메모: 재정의 해시코드() 모든 개체에 대해 고유한 번호를 생성하도록 메서드를 수행해야 합니다. 예를 들어 학생 클래스의 경우 롤 번호를 반환할 수 있습니다. hashCode() 메서드에서 학생의 고유한 정보를 얻을 수 있습니다. 

예:

공개 수업 학생 {

내부 롤;

@보수

공개 int hashCode() {

리턴 롤;

}

}

설명: 그만큼 해시코드() Student 개체의 롤을 기반으로 사용자 지정 해시 값을 반환하도록 메서드가 재정의되었습니다.

3. equals(Object obj) 메소드

그만큼 같음() 메소드는 주어진 객체를 현재 객체와 비교합니다. 사용자 지정 동등 조건을 정의하려면 이 메서드를 재정의하는 것이 좋습니다.

메모: 일반적으로 해시코드() 동일한 개체가 동일한 해시 코드를 가져야 한다고 명시하는 hashCode 메서드에 대한 일반 계약을 유지하기 위해 이 메서드를 재정의할 때마다 메서드를 사용합니다. 

예:

공개 수업 학생 {

내부 롤;


@보수

공개 부울 같음(객체 o) {

if (o 인스턴스of 학생) {

return this.roll == ((학생) o).roll;

}

거짓을 반환;

}

}

설명: 그만큼 같음() 비교를 위해 메서드가 재정의되었습니다. 연타 두 학생 개체 사이.

4. getClass() 메소드

그만큼 getClass() 메소드는 'this' 객체의 클래스 객체를 반환하고 객체의 실제 런타임 클래스를 가져오는 데 사용됩니다. 이 클래스의 메타데이터를 가져오는 데에도 사용할 수 있습니다. 반환된 Class 객체는 표현된 클래스의 정적 동기화 메서드에 의해 잠긴 객체입니다. 최종이므로 재정의하지 않습니다.

예:

Java
// Demonstrate working of getClass() public class Geeks {  public static void main(String[] args)  {  Object o = new String('GeeksForGeeks');  Class c = o.getClass();  System.out.println('Class of Object o is: '  + c.getName());  } } 

산출
Class of Object o is: java.lang.String 

설명: 그만큼 getClass() 메소드는 'o' 객체의 런타임 클래스를 인쇄하는 데 사용됩니다.

메모: .class 파일을 로드한 후 JVM은 다음 유형의 객체를 생성합니다. java.lang.클래스 힙 영역에 있습니다. 이 클래스 객체를 사용하여 클래스 수준 정보를 얻을 수 있습니다. 그것은 널리 사용됩니다 반사  

5. finalize() 메소드

그만큼 마무리() 객체가 가비지 수집되기 직전에 메서드가 호출됩니다. 그것은 가비지 컬렉터 가비지 수집기가 개체에 대한 참조가 더 이상 없다고 판단하면 개체에 대한 참조가 없습니다. 시스템 자원을 처리하고 정리 작업을 수행하고 메모리 누수를 최소화하려면 finalize() 메서드를 재정의해야 합니다. 예를 들어 서블릿 개체 웹 컨테이너를 삭제하기 전에 항상 finalize 메서드를 호출하여 세션 정리 활동을 수행합니다. 

메모: finalize 메소드는 그냥 호출됩니다. 한 번 해당 객체가 여러 번 가비지 수집에 적합하더라도 객체에 대해. 

예:

Java
// Demonstrate working of finalize() public class Geeks {  public static void main(String[] args) {    Geeks t = new Geeks();  System.out.println(t.hashCode());  t = null;  // calling garbage collector  System.gc();  System.out.println('end');  }  @Override protected void finalize()  {  System.out.println('finalize method called');  } } 

산출
1510467688 end finalize method called 

설명: 그만큼 마무리() 객체가 가비지 수집되기 직전에 메서드가 호출됩니다.

6. 클론() 메소드 

그만큼 클론() 메소드는 현재 객체의 복사본인 새 객체를 생성하고 반환합니다.

예:

공개 클래스 Book은 Cloneable을 구현합니다.

개인 문자열 t; //제목


공개 도서(문자열 t) {

this.t = t;

}

@보수

공용 개체 복제()에서 CloneNotSupportedException이 발생합니다.

super.clone()을 반환합니다.

}

}

설명: 그만큼 클론() 메서드가 재정의되어 복제된 복사본을 반환합니다. 책 개체 .

7. 동시성 메서드: wait() inform() 및 informAll()

이러한 방법은 다음과 관련이 있습니다. Java의 스레드 통신 . 동시 프로그래밍에서 스레드를 대기시키거나 다른 사람에게 알리는 데 사용됩니다.

Java의 모든 객체 클래스 메소드를 사용하는 예

Java
import java.io.*; public class Book implements Cloneable {  private String t; // title  private String a; // author  private int y; // year  public Book(String t String a int y)  {  this.t = t;  this.a = a;  this.y = y;  }  // Override the toString method  @Override public String toString()  {  return t + ' by ' + a + ' (' + y + ')';  }  // Override the equals method  @Override public boolean equals(Object o)  {  if (o == null || !(o instanceof Book)) {  return false;  }  Book other = (Book)o;  return this.t.equals(other.getTitle())  && this.a.equals(other.getAuthor())  && this.y == other.getYear();  }  // Override the hashCode method  @Override public int hashCode()  {  int res = 17;  res = 31 * res + t.hashCode();  res = 31 * res + a.hashCode();  res = 31 * res + y;  return res;  }  // Override the clone method  @Override public Book clone()  {  try {  return (Book)super.clone();  }  catch (CloneNotSupportedException e) {  throw new AssertionError();  }  }  // Override the finalize method  @Override protected void finalize() throws Throwable  {  System.out.println('Finalizing ' + this);  }  public String getTitle() { return t; }  public String getAuthor() { return a; }  public int getYear() { return y; }  public static void main(String[] args)  {  // Create a Book object and print its details  Book b1 = new Book(  'The Hitchhiker's Guide to the Galaxy'  'Douglas Adams' 1979);  System.out.println(b1);  // Create a clone of the Book object and print its  // details  Book b2 = b1.clone();  System.out.println(b2);  // Check if the two objects are equal  System.out.println('b1 equals b2: '  + b1.equals(b2));  // Get the hash code of the two objects  System.out.println('b1 hash code: '  + b1.hashCode());  System.out.println('b2 hash code: '  + b2.hashCode());  // Set book1 to null to trigger garbage collection  // and finalize method  b1 = null;  System.gc();  } } 

산출
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527 

설명: 위의 예는 toString() 같음() 해시코드() 그리고 클론() 의 방법 도서 수업 .