Java - Wrapper & Class

develkkm·2025년 12월 4일

0부터 시작하는 Java

목록 보기
24/27

Wrapper Class

기본형은 값만 저장하는 단순한 타입이다.

  • 가볍고 빠르지만 객체가 아니라서 메서드를 가질 수 없고
  • 컬렉션에 바로 넣을 수도 없고
  • null로 상태를 표현할 수도 없다.

자바는 이런 한계를 해결하기 위해 기본형을 객체로 감싼 래퍼 클래스를 제공한다.

- intInteger  
- longLong  
- doubleDouble  
- booleanBoolean  
- charCharacter  

래퍼 클래스는 모두 불변이다.
값이 바뀌지 않기 때문에 항상 새로운 객체를 만들면서 사용하게 된다.


Boxing & UnBoxing

기본형을 객체로 감싸는 것을 boxing이라고 한다.

Integer num = Integer.valueOf(10);

래퍼에서 값을 꺼내 기본형으로 되돌리는 것을 unboxing이라고 한다.

int value = num.intValue();

자바는 이를 자동으로 처리하는 auto(un)boxing을 제공한다.

Integer a = 10;
int b = a;

Class Class

클래스 정보를 표현하는 메타 객체

Class 객체는 자바의 모든 클래스 정보를 담고 있는 특별한 객체다.
프레임워크가 동작할 수 있는 기반이 되는 기술로 애노테이션 스캔이나 리플렉션 기능도 Class를 통해 이루어진다.

Class 객체는 다음과 같은 방식으로 얻을 수 있다.

Class clazz1 = String.class;
Class clazz2 = new String().getClass();
Class clazz3 = Class.forName("java.lang.String");

얻은 Class 정보로 필드나 메서드를 조회할 수 있다.

clazz.getDeclaredFields();
clazz.getDeclaredMethods();

Class는 결국 코드를 데이터처럼 다루기 위한 기반이다.


System Class

JVM 기능에 접근하기 위한 도구

System은 객체를 생성할 수 없으며 모든 기능이 static으로 제공된다.
JVM 수준의 기능들을 제공하는 유틸리티 역할을 한다.

시간 확인

System.currentTimeMillis();

환경 변수 조회

System.getenv("PATH");

표준 입출력 스트림

System.out.println("hello");
System.err.println("error");

System.exit()

System.exit는 JVM을 즉시 종료하는 기능이다.

System.exit(0);

프로그램이 강제로 종료되기 때문에 정리해야 하는 리소스가 있어도 처리되지 않는다.
스레드가 동작 중이더라도 모두 강제로 끊긴다.
스프링 같은 프레임워크에서는 컨테이너 종료 과정이 무시되어 예상치 못한 장애를 유발할 수 있다.

일반적인 애플리케이션에서는 종료 흐름을 정상적으로 흘려보내는 것이 안전하다.


Math Class

수학 연산 유틸리티

Math는 간단한 수학 연산을 제공하는 유틸리티 클래스다.
객체를 만들지 않고 바로 사용할 수 있다.

절대값

Math.abs(-10);

최댓값과 최솟값

Math.max(10, 20);
Math.min(10, 20);

반올림, 올림, 내림

Math.round(10.4);
Math.ceil(10.1);
Math.floor(10.9);

Math.Random

간단한 난수는 Math.random으로 생성할 수 있다.

double r = Math.random();

범위를 변경하고 싶다면 곱셈과 캐스팅으로 조정한다.

int v = (int)(Math.random() * 10); // 0 ~ 9

좀 더 통제된 난수는 Random 클래스를 사용한다.

Random random = new Random();
int n = random.nextInt(10); // 0 ~ 9

Random은 시드 값 설정, 정해진 범위, 다양한 타입 등
더 정교한 랜덤 기능을 제공한다.

profile
알던것을 더 확실하게

0개의 댓글