클래스들의 충돌을 방지하고 그룹화하는 **패키지(Package)**와 자바 프로그램의 근간을 이루는 최상위 java.lang 패키지의 핵심 클래스들을 학습합니다.
1. 기본 패키지 핵심 용어 사전 (Glossary)
- Package (패키지): 관련 있는 클래스와 인터페이스들을 폴더 구역 단위로 그룹화하여 이름 충돌을 방지하는 네임스페이스입니다.
- java.lang: 자바 프로그램 실행 시
import구문 없이도 자동으로 불러와지는 가장 기본적이고 필수적인 표준 패키지입니다. - Object Class: 자바의 모든 클래스가 직간접적으로 상속받는 최상위 으뜸 부모 클래스입니다.
- String Immutability (문자열 불변성): 자바의
String객체는 생성 후 내부 문자열 값을 수정할 수 없으며, 변경 시 새로운 객체가 생성되는 성질입니다. - StringBuilder / StringBuffer: 문자열을 빈번하게 결합/수정할 때 메모리 낭비를 줄여주는 가변(Mutable) 문자열 버퍼 클래스입니다.
- Wrapper Class: 기본 자료형(
int,double등)을 객체 형태로 포장해 주는 클래스입니다. (Integer,Double등 - Auto-Boxing / Unboxing 지원)
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대 필수 오버라이딩 메소드
equals(Object obj): 두 객체의 참조 주소가 아닌 실제 데이터 내용이 같은지 비교하도록 오버라이딩.hashCode(): 객체의 고유한 해시코드 정수값을 반환. (HashMap,HashSet사용 시equals와 함께 오버라이딩 필수!)toString(): 객체의 상태 정보를 읽기 쉬운 문자열 텍스트로 반환.
4. 자주 묻는 질문 (Q&A)
Q. String a = "hi"; 와 String b = new String("hi"); 의 차이는?
A. 리터럴 방식("hi")은 Heap 영역의 String Constant Pool에 생성되어 동일 문자열을 공유하지만, new String()은 무조건 독립된 새로운 Heap 객체 메모리를 할당합니다.