Software Engineering/Java, JSP

[Java] 제7장 java.lang 패키지

iseop 2023. 4. 30. 20:13   인쇄용 버전

1. 단원 요약

  • java.lang 패키지는 프로그래밍에 필수적인 기본 클래스들을 제공한다.
  • 별도로 import 하지 않아도 자동으로 포함된다.
  • 포함되는 클래스들은 다음과 같다.
    • 최상위 클래스 Object
    • 문자열 처리용 String, StringBuffer
    • 프로세스/스레드 제어용 Process, Runtime, Thread, ThreadGroup
    • 수학 계산용 Math, StrictMath
    • 예외처리용 Exception, Throwable, Error
    • 포장 클래스(Wrapper Class) Boolean, Character, Byte, Short, Integer, Long, Float, Double
    • 시스템 접근용 System
    • 패키지/클래스 제어용 Package, Class, ClassLoader
  • Object 관련
    • Java에서는 객체 식별을 위해 객체의 해시값을 활용한다.
    • 이를 얻기 위한 toString() 메소드가 존재한다. 실행 시 "식별자@16진 해시값"이 반환된다.
    • 두 객체가 동일한지 여부를 얻기 위한 equals() 메소드가 존재한다. 반환값은 boolean 타입이다. ==와 같다.
    • Clonable 인터페이스를 구현한 객체를 복제하기 위한 clone() 메소드가 존재한다.
  • String 관련
    • String은 참조형이지만 기본형처럼 사용할 수 있다. String a = "a"와 String a = new String("a")는 동일하다.
    • String은 immutable이다. 따라서 관련 메소드들은 String의 리터럴을 수정하는 대신 수정된 새 String을 반환한다.
    • String의 equals()는 객체 비교가 아닌 리터럴을 비교하는 것으로 오버라이딩 되어 있다.
    • String을 자유자재로 다룰 수 있으면 편리하다.
      • 비교 메소드: equals(), equalsIgnoreCase(), compareTo(), compareToIgnoreCase()
      • 검색 메소드: indexOf(), lastIndexOf()
      • 추출 메소드: charAt(), substring()
      • 수정 메소드: replace(), trim, toUpperCase(), toLowerCase(), concat()
      • 기타 자주 쓰이는 메소드: startsWith(), endsWith, toCharArray(), length()
    • StringBuilder, StringBuffer는 저장된 문자열의 수정이 가능한 자료구조를 구현한 클래스이다.
      • StringBuffer는 동시성 제어를 고려하여 구현되어 있다. 
      • append(), delete(), replace(), insert(), reverse()
      • capacity(), length()
  • Wrapper 관련
    • 기본형(primitive type)과 wrapper 클래스 간에는 자동으로 박싱/언박싱이 실행된다.
    • 명시적 Boxing의 예: Double double1 = Double.valueOf(10.0);
    • 명시적 Unboxing의 예: double double2 = double1.doubleValue();
    • 자동(묵시적) Boxing/Unboxing의 예: double1 = double2; double2 = double1;
  • System 관련
    • System.in: InputStream
      • System.in.read(): 키보드로부터 1바이트를 읽고 상응하는 ASCII 정수를 반환한다.
    • System.out: PrintStream
    • System.err: PrintStream

 

2. 연습문제 요약

  • StringBuilder 또는 StringBuffer 객체를 생성할 때 그 용량은 (초기값의 길이 + 16바이트)이다.
  • Integer.parseInt(), Integer.toHexString()
  • System 클래스의 모든 멤버는 static이다.