// education

패키지, 모듈 시스템과 자바 기본 패키지 (java.lang)

클래스들의 충돌을 방지하고 그룹화하는 **패키지(Package)**와 자바 프로그램의 근간을 이루는 최상위 java.lang 패키지의 핵심 클래스들을 학습합니다.


1. 기본 패키지 핵심 용어 사전 (Glossary)


2. String 불변성과 StringBuilder 성능 비교

public class StringPerformance {
    public static void main(String[] args) {
        // 1. String 덧셈 연산 (매번 새 객체 생성으로 메모리 비효율)
        String str = "Hello";
        str += " World"; // 새로운 객체 가리킴
        System.out.println("String 결과: " + str);

        // 2. StringBuilder 활용 (동일 버퍼 내 텍스트 갱신 - 속도 100배 가량 빠름)
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
        sb.append(" World");
        sb.append("!");
        System.out.println("StringBuilder 결과: " + sb.toString());
    }
}

3. Object 클래스의 3대 필수 오버라이딩 메소드

  1. equals(Object obj): 두 객체의 참조 주소가 아닌 실제 데이터 내용이 같은지 비교하도록 오버라이딩.
  2. hashCode(): 객체의 고유한 해시코드 정수값을 반환. (HashMap, HashSet 사용 시 equals와 함께 오버라이딩 필수!)
  3. toString(): 객체의 상태 정보를 읽기 쉬운 문자열 텍스트로 반환.

4. 자주 묻는 질문 (Q&A)

Q. String a = "hi";String b = new String("hi"); 의 차이는? A. 리터럴 방식("hi")은 Heap 영역의 String Constant Pool에 생성되어 동일 문자열을 공유하지만, new String()은 무조건 독립된 새로운 Heap 객체 메모리를 할당합니다.

← 이전상속(Inheritance), 다형성, 추상 클래스 및 인터페이스 다음 →제네릭(Generics)과 컬렉션 프레임워크 (List, Set, Map)