목차
1. Math 클래스란?
📌 Math 클래스
수학 계산에 필요한 기능들을 모아놓은 Java 내장 API입니다.
자바에서 자주 사용하는 수학 연산 함수들이 이 클래스에 포함되어 있습니다.
📌 특징
- java.lang.Math 패키지에 포함
→ 별도 import 없이 사용 가능 - 모든 메서드가 static
→ 객체 생성 없이 Math.메서드() 형태로 호출
// 객체 생성 없이 바로 사용
int result = Math.abs(-10);
2. 주요 메서드
📌 절대값 구하기 - abs()
System.out.println("절대값: " + Math.abs(-7)); // 7
System.out.println("절대값: " + Math.abs(-1.25)); // 1.25
📌 최솟값, 최댓값 - min(), max()
System.out.println("최솟값: " + Math.min(10, 20)); // 10
System.out.println("최댓값: " + Math.max(20, 30)); // 30
📌 원주율 상수 - PI
System.out.println("원주율: " + Math.PI); // 3.141592653589793
📌 난수 생성 - random()
- 특정 범위의 정수 난수 만들기
System.out.println("0.0 이상 1.0 미만의 난수: " + Math.random());
// 공식
// (int)(Math.random() * 개수) + 시작값;
// 예제
// 0~9
int r1 = (int)(Math.random() * 10);
System.out.println("0~9: " + r1);
// 1~10
int r2 = (int)(Math.random() * 10) + 1;
System.out.println("1~10: " + r2);
// 10~15
int r3 = (int)(Math.random() * 6) + 10;
System.out.println("10~15: " + r3);
3. java.util.Random 클래스와 비교
📌 Random 클래스
Java에서는 Random 클래스도 난수 생성을 지원합니다.
import java.util.Random;
Random rand = new Random();
int num = rand.nextInt(10); // 0 ~ 9 난수
📌 Random 클래스 주요 특징
| 항목 | Math.random() | Random 클래스 |
| 리턴 타입 | double (0.0 이상 1.0 미만) | 다양한 타입 가능 (int, long, boolean, ...) |
| 범위 지정 방식 | 수식 필요 | nextInt(bound) 등으로 간단하게 지정 가능 |
| 객체 생성 | ❌ (static 메서드) | ⭕ 객체 생성 후 사용 |
| 난수 품질 | 단순, 빠름 | 더 다양한 방식 지원 |
📌 Random 클래스 범위별 정수 난수 생성
Random random = new Random();
// 0~9
int a = random.nextInt(10);
// 1~10
int b = random.nextInt(10) + 1;
// 20~45
int c = random.nextInt(26) + 20;
System.out.println("0~9: " + a);
System.out.println("1~10: " + b);
System.out.println("20~45: " + c);
4. 정리
- Math 클래스는 자주 쓰는 수학 기능을 모아둔 유틸리티 클래스입니다.
- 객체 생성 없이 메서드를 호출할 수 있습니다.
- 난수 생성 시에는 Math.random() vs Random 클래스의 특성을 이해하고 목적에 따라 선택하면 좋습니다.
마무리
다음 게시글에서는 API 중 Scanner 클래스에 대해 학습하겠습니다.
'study > Programming' 카테고리의 다른 글
| [JAVA 기초] 제어문 - 조건문 (2) | 2025.04.28 |
|---|---|
| [JAVA 기초] Java API - Scanner 클래스 (1) | 2025.04.27 |
| [JAVA 기초] API 개념 중심 (1) | 2025.04.25 |
| [JAVA 기초] import 문법 (1) | 2025.04.24 |
| [JAVA 기초] 패키지(package)란? (1) | 2025.04.23 |