자바 프로그래밍의 가장 기본이 되는 핵심 도구함, java.lang 패키지.
이 패키지는 너무나 중요해서 자바가 자동으로 import 해주기 때문에 우리가 따로 불러오지 않아도 바로 사용할 수 있습니다.
📘 java.lang 패키지: "자바의 뿌리"
1. Object class (모든 클래스의 조상)
- 설명: 자바의 모든 클래스가 예외 없이 상속받는 최상위 클래스입니다.
- 비유: 모든 생명체의 공통 DNA와 같습니다. 우리가 만드는 모든 클래스는 Object의 기능을 물려받습니다.
- 주요 메서드: toString() (객체 정보 출력), equals() (객체 비교).
Java
public class ObjectExample {
public static void main(String[] args) {
Object obj = new Object();
// 모든 객체는 toString()을 가집니다.
System.out.println("객체 정보: " + obj.toString());
}
}
2. System class (운영체제와의 통로)
- 설명: 프로그램이 실행되는 운영체제(OS)의 기능을 이용할 수 있게 돕는 클래스입니다.
- 비유: 우리 집(프로그램)과 외부 세계(OS)를 연결하는 인터폰과 같습니다.
- 주요 기능: System.out (출력), System.in (입력), System.currentTimeMillis() (시간 측정), System.exit() (강제 종료).
Java
public class SystemExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); // 현재 시간 측정
System.out.println("작업 수행 중...");
System.out.println("경과 시간(ms): " + (System.currentTimeMillis() - startTime));
}
}
3. Class class (클래스의 설계도 정보)
- 설명: 클래스와 인터페이스의 **메타 데이터(정보)**를 담고 있는 클래스입니다.
- 비유: 건물의 설계도 그 자체를 담고 있는 문서고와 같습니다.
- 활용: 실행 중에 클래스의 이름이 무엇인지, 어떤 메서드를 가졌는지 등을 동적으로 알아낼 때(리플렉션) 사용합니다.
Java
public class ClassExample {
public static void main(String[] args) {
String str = "Hello";
Class cls = str.getClass(); // String 클래스의 정보를 가져옴
System.out.println("클래스 이름: " + cls.getName());
System.out.println("단순 이름: " + cls.getSimpleName());
}
}
4. String class (문자열 전용 비서)
- 설명: 문자열을 저장하고 조작하는 클래스입니다.
- 특징: 한 번 만들어진 문자열은 변경할 수 없는(Immutable) 성질을 가집니다. 내용을 바꾸면 새로운 문자열 객체가 생성됩니다.
Java
public class StringExample {
public static void main(String[] args) {
String subject = "Java Programming";
System.out.println("글자 수: " + subject.length());
System.out.println("대문자로: " + subject.toUpperCase());
System.out.println("치환: " + subject.replace("Java", "Python"));
}
}
5. Wrapper class (기본 타입을 객체로 포장)
- 설명: int, double 같은 기본 타입 데이터를 객체처럼 다루기 위해 **포장(Wrapping)**한 클래스들입니다.
- 종류: Integer, Double, Boolean, Character 등.
- 비유: 알맹이(기본 타입)를 예쁜 박스(객체)에 담아 선물하는 것과 같습니다. 컬렉션(List 등)에 숫자를 담을 때 필수적입니다.
Java
public class WrapperExample {
public static void main(String[] args) {
// 박싱(Boxing): 기본 타입 -> 객체
Integer num = 100;
// 문자열을 숫자로 바꾸는 아주 유용한 기능
int value = Integer.parseInt("2026");
System.out.println("숫자로 변환: " + value);
}
}
6. Math class (수학 천재)
- 설명: 수학 계산에 필요한 정적(static) 메서드를 모아둔 클래스입니다.
- 특징: 모든 메서드가 static이라서 new로 객체를 만들지 않고 바로 Math.abs()처럼 사용합니다.
Java
public class MathExample {
public static void main(String[] args) {
System.out.println("절대값: " + Math.abs(-10));
System.out.println("올림: " + Math.ceil(3.1));
System.out.println("랜덤값(0~1): " + Math.random());
System.out.println("최대값: " + Math.max(10, 20));
}
}
👨🏫 쉽게 이해하는 핵심 포인트
- **Object**는 모든 것의 시작이므로, 어떤 객체든 Object 타입 변수에 담을 수 있습니다.
- **String**은 값이 바뀌면 메모리에 새로운 주소가 할당되므로, 빈번한 문자열 수정이 필요할 땐 StringBuilder를 쓰는 것이 성능에 좋습니다.
- Wrapper 클래스 덕분에 우리는 숫자 데이터를 객체만 들어갈 수 있는 리스트(ArrayList<Integer>) 등에 자유롭게 넣을 수 있습니다.
오늘의 요약
- Object: 모든 클래스의 시조.
- System: OS와 소통하는 창구.
- Class: 클래스 자신의 정보를 알려줌.
- String: 변하지 않는 문자열 관리.
- Wrapper: 기본 숫자를 객체로 포장.
- Math: 복잡한 수학 계산 해결사.
자바 프로그래밍의 가장 밑바닥을 지탱하는 기본기들을 모두 섭렵하셨네요!

'JAVA 80%' 카테고리의 다른 글
| Collection framework (0) | 2025.11.05 |
|---|---|
| Thread control (0) | 2025.11.05 |
| java.util package (0) | 2025.11.05 |
| Anonymous object (0) | 2025.11.05 |
| Nested class and Nested interface (0) | 2025.10.08 |