클래스들의 충돌을 피하고 그룹화하는 **패키지(Package)**와 자바 표준 라이브러리의 핵심인 java.lang 및 java.util 패키지의 유틸리티 클래스들을 다룹니다.
1. 기본 패키지 핵심 용어 사전 (Glossary)
- Package (패키지): 관련 있는 클래스와 인터페이스들을 폴더 체계 형태로 묶어 관리하는 네임스페이스입니다.
- Object Class: 자바에서 작성하는 모든 클래스가 직간접적으로 상속받는 최상위 으뜸 클래스입니다. (
equals(),hashCode(),toString()보유) - String Immutability (문자열 불변성): 자바의
String객체는 한 번 생성되면 메모리 내 문자열을 변경할 수 없고, 연산 시 항상 새 객체를 생성하는 성질입니다. - StringBuffer / StringBuilder: 문자열 덧셈/수정 시 메모리 생성 낭비를 막고 가변(Mutable) 버퍼 공간에서 고속으로 텍스트를 처리해 주는 클래스입니다.
- Wrapper Class: 기본 자료형(
int,double등)을 객체 상태로 감싸서 사용할 수 있게 해주는 포장 클래스입니다. (Integer,Double등 - Auto-Boxing지원)
2. String vs StringBuilder 성능 실습
public class StringCompareExample {
public static void main(String[] args) {
// 1. String 연결 연산 (새 객체가 매번 생성되어 메모리 낭비)
String s = "Hello";
s += " World";
System.out.println("String 결과: " + s);
// 2. StringBuilder 활용 (가변 버퍼 사용으로 100배 이상 고속 처리)
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
sb.append("!");
System.out.println("StringBuilder 결과: " + sb.toString());
}
}
3. Object 클래스의 3대 필수 오버라이딩 메소드
equals(Object obj): 단순 주소 비교가 아닌 객체의 내부 실제 값이 같은지 판단하도록 오버라이딩.hashCode(): 객체의 고유 정수 해시코드를 반환. (HashSet,HashMap사용 시 필수!)toString(): 객체의 현재 상태를 가독성 있는 텍스트 문자열로 반환.
4. 자주 묻는 질문 (Q&A)
Q. StringTokenizer와 String.split()의 차이는 무엇인가요?
A. split()은 정규 표현식을 사용하여 복잡한 구분자로 잘라내어 배열로 반환하며, StringTokenizer는 단순 문자 구분자로 메모리 효율적으로 토큰을 하나씩 꺼내옵니다.