오늘은 System 클래스, Wrapper 클래스, 그리고 컬렉션 프레임워크(List / Set / Map) 를 중심으로 실습 위주 학습을 진행했다.
개념 자체는 많았지만, 직접 코드를 작성해보면서 흐름을 이해할 수 있었다.
System 클래스는 자바 프로그램의 핵심 유틸리티 클래스로, 다음과 같은 기능들을 제공한다.
public class SystemIOExample {
public static void main(String[] args) {
// 표준 출력
System.out.println("일반 메시지");
System.err.println("에러 메시지");
// 표준 입력
Scanner scanner = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
System.out.println("안녕하세요, " + name + "님!");
scanner.close();
}
}
public class SystemUtilExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
for(int i = 0; i < 1_000_000; i++) {
Math.sqrt(i);
}
long endTime = System.currentTimeMillis();
System.out.println("실행 시간: " + (endTime - startTime) + "ms");
// 시스템 프로퍼티
System.out.println("Java 버전: " + System.getProperty("java.version"));
System.out.println("OS: " + System.getProperty("os.name"));
// 배열 복사
int[] src = {1,2,3,4,5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);
// GC 제안
System.gc();
// 프로그램 종료
// System.exit(0);
}
}
Wrapper 클래스는 기본 타입을 객체로 다루기 위해 사용하는 클래스이다.
public class WrapperExample {
public static void main(String[] args) {
Integer i = 10; // 자동 박싱
int value = i; // 자동 언박싱
int parsed = Integer.parseInt("123");
String str = Integer.toString(456);
System.out.println("int 최대값: " + Integer.MAX_VALUE);
System.out.println("int 최소값: " + Integer.MIN_VALUE);
}
}
컬렉션 프레임워크는 데이터를 효율적으로 저장·검색·조작하기 위한 표준 구조이다.

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Spring");
list.add("Backend");
System.out.println(list.size());
for (String s : list) {
System.out.println(s);
}
add(), get(), set(), remove() 자주 사용Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
foreach는 내부적으로 Iterator를 사용foreach 사용이 일반적Set<String> fruits = new HashSet<>();
fruits.add("사과");
fruits.add("사과");
fruits.add("바나나");
System.out.println(fruits);
⚠️ 객체를 Set에 넣을 경우
toString()과 equals()를 반드시 오버라이딩해야 정상 동작한다.
key : value 구조Map<String, String> phoneBook = new HashMap<>();
phoneBook.put("Hong", "010-1111-2222");
phoneBook.put("Kim", "010-3333-4444");
phoneBook.put("Hong", "010-9999-8888"); // 덮어쓰기
System.out.println(phoneBook.get("Hong"));
for (String key : phoneBook.keySet()) {
System.out.println(key + " : " + phoneBook.get(key));
}
for (Map.Entry<String, String> entry : phoneBook.entrySet()) {
System.out.println(entry.getKey() + " :: " + entry.getValue());
}
오늘은 실습 위주 수업이라 부담이 덜했고,
여러 API를 직접 사용해보면서 이해가 훨씬 잘 됐다.
내일부터는 작은 프로젝트를 진행할 예정인데
CLI 기반 도서 관리 시스템을 만들 것 같다.
객체를 어떻게 추상화할지 팀원들과 이야기하면서
어느 정도 뼈대는 잡힌 상태라,
내일 구현해보는 게 기대되기도 하고 조금 걱정되기도 한다.
내일은 작성한 코드를 정리해서 설명해보는 시간을 가져야겠다.