JAVA 80%

java.lang package

lshjju 2025. 11. 5. 16:47

자바 프로그래밍의 가장 기본이 되는 핵심 도구함, 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));
    }
}

👨‍🏫 쉽게 이해하는 핵심 포인트

  1. **Object**는 모든 것의 시작이므로, 어떤 객체든 Object 타입 변수에 담을 수 있습니다.
  2. **String**은 값이 바뀌면 메모리에 새로운 주소가 할당되므로, 빈번한 문자열 수정이 필요할 땐 StringBuilder를 쓰는 것이 성능에 좋습니다.
  3. 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