• AI글쓰기 2.1 업데이트
Java 패키지, import, Wrapper 클래스 및 문자열 처리
본 내용은
"
명품 JAVA Programming(개정5판) [개정5판] 연습문제 챕터 6
"
의 원문 자료에서 일부 인용된 것입니다.
2025.06.03
문서 내 토픽
  • 1. 패키지(Package)와 import 문
    Java에서 패키지는 관련된 클래스와 인터페이스를 하나의 디렉터리에 묶어 놓은 것이다. import 문은 다른 패키지에 있는 클래스를 사용할 때 사용하며, 해당 클래스를 현재 파일로 가져온다. import java.util.Random은 Random 클래스만 가져오고, import java.util.*는 java.util 패키지의 모든 클래스를 가져온다. java.lang 패키지에 속한 클래스는 import 없이 자동으로 사용할 수 있다. import 문을 사용하지 않고도 클래스 이름을 전체 경로로 쓰면 클래스를 사용할 수 있다.
  • 2. Wrapper 클래스와 자동 박싱/언박싱
    Wrapper 클래스는 기본 데이터 타입을 객체로 변환하는 클래스이다. String.valueOf()는 정수를 문자열로 변환하고, Double.parseDouble()은 문자열을 double 타입으로 변환한다. Boolean.parseBoolean()은 문자열을 boolean 타입으로 변환한다. Integer.toBinaryString()은 정수를 이진수 문자열로 변환한다. 자동 박싱은 기본 타입을 Wrapper 객체로 자동 변환하고, 자동 언박싱은 Wrapper 객체를 기본 타입으로 자동 변환한다.
  • 3. String 클래스와 문자열 처리
    String 클래스는 문자열을 다루는 클래스이다. == 연산자는 문자열의 주소를 비교하고, equals() 메소드는 문자열의 내용을 비교한다. split() 메소드는 문자열을 구분자로 분리하여 배열로 반환한다. StringTokenizer 클래스는 문자열을 토큰으로 분리한다. trim() 메소드는 문자열의 앞뒤 공백을 제거하고, concat() 메소드는 문자열을 연결한다.
  • 4. Calendar 클래스와 날짜/시간 처리
    Calendar 클래스는 날짜와 시간을 다루는 클래스이다. Calendar.getInstance()로 Calendar 객체를 생성한다. clear() 메소드는 Calendar 객체의 모든 정보를 초기화한다. set() 메소드로 년도, 월, 날짜를 설정하고, get() 메소드로 값을 가져온다. getActualMaximum() 메소드는 해당 월의 최대 날짜를 반환한다. getTimeInMillis()는 시간을 밀리초 단위로 반환하여 날짜 차이를 계산할 수 있다.
Easy AI와 토픽 톺아보기
  • 1. 패키지(Package)와 import 문
    패키지와 import 문은 Java 프로그래밍에서 코드 조직화와 네임스페이스 관리의 핵심 요소입니다. 패키지는 관련된 클래스들을 논리적으로 그룹화하여 대규모 프로젝트에서 클래스 이름 충돌을 방지하고 코드의 가독성을 높입니다. import 문을 통해 다른 패키지의 클래스를 간편하게 사용할 수 있으며, 와일드카드(*)를 사용한 import는 편리하지만 코드의 명확성을 해칠 수 있으므로 신중하게 사용해야 합니다. 적절한 패키지 구조 설계는 유지보수성과 확장성을 크게 향상시키므로 프로젝트 초기 단계에서 신중하게 계획하는 것이 중요합니다.
  • 2. Wrapper 클래스와 자동 박싱/언박싱
    Wrapper 클래스는 기본 데이터 타입을 객체로 변환하여 컬렉션이나 제네릭과 같은 객체 기반 API를 사용할 수 있게 해줍니다. 자동 박싱과 언박싱은 개발자의 편의성을 크게 향상시켜 코드를 간결하게 만들지만, 성능 오버헤드와 NullPointerException의 위험성을 야기할 수 있습니다. 특히 반복문이나 대량의 데이터 처리에서는 박싱/언박싱의 성능 영향을 고려해야 하며, null 값 처리에 주의가 필요합니다. 편의성과 성능의 균형을 맞추어 적절히 사용하는 것이 중요합니다.
  • 3. String 클래스와 문자열 처리
    String 클래스는 Java에서 가장 자주 사용되는 클래스로, 불변(immutable) 특성으로 인해 스레드 안전성과 캐싱의 이점을 제공합니다. 그러나 문자열 연결 시 새로운 객체가 생성되므로 반복적인 연결 작업에서는 StringBuilder나 StringBuffer를 사용해야 합니다. String의 다양한 메서드들(split, substring, replace 등)은 강력하지만, 정규표현식을 활용하면 더욱 복잡한 문자열 처리가 가능합니다. 문자열 처리의 성능과 메모리 효율성을 고려하여 상황에 맞는 도구를 선택하는 것이 필수적입니다.
  • 4. Calendar 클래스와 날짜/시간 처리
    Calendar 클래스는 날짜와 시간을 다루기 위한 전통적인 방법이지만, 복잡한 API와 월의 0부터 시작하는 인덱싱 등으로 인해 사용이 직관적이지 않습니다. Java 8 이후 도입된 java.time 패키지(LocalDate, LocalTime, LocalDateTime 등)는 불변성, 스레드 안전성, 더 나은 API 설계를 제공하므로 새로운 프로젝트에서는 이를 우선적으로 사용해야 합니다. 기존 레거시 코드에서 Calendar를 사용하고 있다면 점진적으로 java.time으로 마이그레이션하는 것이 좋습니다. 날짜/시간 처리는 타임존과 일광절약시간 등 복잡한 요소를 포함하므로 신중한 설계가 필요합니다.