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
- System.in: InputStream
2. 연습문제 요약
- StringBuilder 또는 StringBuffer 객체를 생성할 때 그 용량은 (초기값의 길이 + 16바이트)이다.
- Integer.parseInt(), Integer.toHexString()
- System 클래스의 모든 멤버는 static이다.