0. JAVA 기초 (5)
- Object Class : 모든 클래스가 상속하는 최상위 클래스 (java.lang.Object Class)
Object Class 안에 있는 Method를 알아보자.
1. toString() : Object 내의 string을 출력

2. equals() : Object 내의 값이 같은지 비교. (Primitive가 아니면 overriding해서 다시 써야함)
3. hashCode() : 인스턴스의 가상머신 주소를 10진수로 바꿔 반환함. (결국 주소를 반환)
==, equals, hashCode의 비교.
*결국 equals, hashCode를 모두 비교해야 완벽하게 같은 것을 알 수 있다.
[Link] : https://jeong-pro.tistory.com/172
자바 equals(), hashCode(), == 연산자 비교 및 개념 정리하기(객체 비교 구문 커스터마이징하는 방법)
자바에서 각각 객체가 동일한지 확인하는 방법 자바 프로그래밍에서 객체가 동일한지 확인하는 분기문은 상당히 많이 작성할 것이다. 예를 들면 '==' 연산자로 비교할 수도 있고 'equals()', 'hashCode()' 로 비교..
jeong-pro.tistory.com
4. clone() : 객체를 그대로 복사. informaiton hiding에 위배될 수 있으므로, clonable interface를 명시해야함.
clone 함수의 overriding은 Source에서 자동 생성할 수 있다.
class Book implements Clonable { // Clonable interface를 받아야한다.
...
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException { // 명시
Book book2 = (Book)book.clone();
...
}
}
5. finalize() : Garbage Collector가 Memory를 비울 때 호출되는 함수
- String : immutable하다. 상수처럼 변하지 않는다. 따라서 String 은 Concat 또는 '+' 했을 때, 새로운 메모리에 합쳐진 String이 생성되기 때문에 메모리 낭비를 야기할 수 있다.
- StringBuilder / StringBuffer : 가변적 char[] 배열을 멤버 변수로 가지는 클래스. concat되었을 때 메모리를 새로 생성하지 않는다.
- StringBuffer는 멀티 쓰레드 환경에서 Synchronization이 보장된다.
- toString()으로 String을 반환한다.
StringBuilder buffer = new StringBuilder("java");
buffer.append("android");
System.out.println(buffer.toString());
- Wrapper Class : 기본 자료형에 대한 클래스. 객체화를 할 때 쓴다.
