21~25일차 java - java.lang 패키지(책 내용 정리)

jin·2022년 5월 22일
0

java.lang 패키지

java.lang 패키지는 자바 프로그램에서 가장 기본이 되는 클래스와 인터페이스를 담고 있는데 import문 없이 사용한다. 지금까지 사용한 System.out.println() 메서드도 java.lang 패키지에 포함된 클래스의 메서드이므로 import문 없이 사용했다.

Java.lang 패키지에 포함된 주요 클래스

클래스 설명
Class 실행 중에 클래스 정보를 제공한다.
Math 각종 수학 함수를 제공한다.
Object 최상위 클래스로 기본적인 메서드를 제공한다.
String, StringBuffer, StringBuilder 문자열을 처리하는 메서드를 제공한다.
System 시스템 정보나 입출력을 처리하는 메서드를 제공한다.
Thread 스레드를 처리하는 메서드를 제공한다.
포장클래스 기초 타입 데이터를 객체로 처리하는 메서드를 제공한다.

Object 클래스

자바에서 모든 클래스의 조상은 java.lang 패키지에 있는 Object 클래스이다. 따라서 어떤 클래스든 Object를 직간접적으로 확장한 클래스가 된다. 명시적인 부모 클래스가 없다면 Object 클래스를 직접 상속하는 코드이므로 다음 두 코드의 의미는 같다.

public class SomeClass { ... }
public class SomeClass extends Object { ... }

Object 클래스는 모든 자바 객체에 적용할 수 있는 메서드로만 정의한 클래스이다. 모든 클래스에 물려주는 Object클래스의 메서드는 다음과 같다.

Obejct 클래스가 제공하는 주요 메서드

메서드 설명
public String toString() 객체의 문자 정보를 반환한다.
public boolean equals(Object o) 현재 객체와 동일한지 여부를 반환한다.
public int hashCode() 객체의 해시코드를 반환한다.
protected Object clone() 객체의 사본을 생성한다..
protected void fnalize 가비지 컬렉터가 객체를 수거할 때 호출한다.
public final Class<?> getClass() 객체 정보를 반환한다.

Object 클래스가 제공하는 toString()equals() 메서드는 대다수 클래스에서는 거의 도움이 되지 않는다.

  • toString() 메서드는 객체에서 '클래스의 이름@16진수 해시코드로 구성된 문자열을 반환한다.
  • equals() 메서드는 두 객체 내용이 아니라 ㄷ 객체의 동일 여부를 조사하는 비교 연산자 ==과 같기 때문이다.
    따라서 대다수 클래스는 Object 클래스가 제공하는 toString()equals() 메서드를 오버라이딩해서 사용한다.
    hashCode() 메서드는 생성자를 통하여 새로운 인스턴스가 메모리로부터 생성될 때 그 인스턴스의 주솟값을 기준으로 만들어지는 일련번호를 반환한다.
    그런데 String은 equals(),toString() 및 hashCode() 메서드를 이미 오버라이딩한 클래스이다. 따라서 String 클래스의 equals()는 두 String 객체가 가진 문자열이 같은지 아닌지에 따라 true 또는 false를 반환하고, toString()은 String 객체의 문자열을 반환하며, hashCode()는 같은 문자열 값에 대하여 같은 정숫값을 반환한다.

5/20 기준으로 toString만 사용했으므로 진도에 맞게 Obejct 클래스까지만 정리하고 진도진행하며 이 포스팅을 수정하는 방향으로 진행하겠다.
그동안 equals나 toString 등을 그냥 java에서만 지원하는 메소드정도로 알고 있어서 음.. 이 메소드는 Arrays 클래스에서도 사용하고 반환값이 이상하지만(16진수) import 없이도 사용가능하고와 같이 두루뭉술하게 알고 있었는데 한번 정리하니 개념 정립에 큰 도움이 됐다.

참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음

0개의 댓글