java.lang 패키지는 자바 프로그램에서 가장 기본이 되는 클래스와 인터페이스를 담고 있는데 import문 없이 사용한다. 지금까지 사용한 System.out.println() 메서드도 java.lang 패키지에 포함된 클래스의 메서드이므로 import문 없이 사용했다.
클래스 | 설명 |
---|---|
Class | 실행 중에 클래스 정보를 제공한다. |
Math | 각종 수학 함수를 제공한다. |
Object | 최상위 클래스로 기본적인 메서드를 제공한다. |
String, StringBuffer, StringBuilder | 문자열을 처리하는 메서드를 제공한다. |
System | 시스템 정보나 입출력을 처리하는 메서드를 제공한다. |
Thread | 스레드를 처리하는 메서드를 제공한다. |
포장클래스 | 기초 타입 데이터를 객체로 처리하는 메서드를 제공한다. |
자바에서 모든 클래스의 조상은 java.lang 패키지에 있는 Object 클래스이다. 따라서 어떤 클래스든 Object를 직간접적으로 확장한 클래스가 된다. 명시적인 부모 클래스가 없다면 Object 클래스를 직접 상속하는 코드이므로 다음 두 코드의 의미는 같다.
public class SomeClass { ... } public class SomeClass extends Object { ... }
Object 클래스는 모든 자바 객체에 적용할 수 있는 메서드로만 정의한 클래스이다. 모든 클래스에 물려주는 Object클래스의 메서드는 다음과 같다.
메서드 | 설명 |
---|---|
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()
메서드는 두 객체 내용이 아니라 ㄷ 객체의 동일 여부를 조사하는 비교 연산자 ==
과 같기 때문이다.toString()
과 equals()
메서드를 오버라이딩해서 사용한다.hashCode()
메서드는 생성자를 통하여 새로운 인스턴스가 메모리로부터 생성될 때 그 인스턴스의 주솟값을 기준으로 만들어지는 일련번호를 반환한다.true
또는 false
를 반환하고, toString()은 String 객체의 문자열
을 반환하며, hashCode()는 같은 문자열 값에 대하여 같은 정숫값
을 반환한다.5/20 기준으로 toString만 사용했으므로 진도에 맞게 Obejct 클래스까지만 정리하고 진도진행하며 이 포스팅을 수정하는 방향으로 진행하겠다.
그동안 equals나 toString 등을 그냥 java에서만 지원하는 메소드정도로 알고 있어서 음.. 이 메소드는 Arrays 클래스에서도 사용하고 반환값이 이상하지만(16진수) import 없이도 사용가능하고와 같이 두루뭉술하게 알고 있었는데 한번 정리하니 개념 정립에 큰 도움이 됐다.
참조 - 한빛아카데미 - 쉽게 배우는 자바 프로그래밍 / 우종정 지음