안녕하세요 궁금한게 있어 질문드립니다.
Math 클래스의 Random 메소드는 객체를 따로 만들지 않는데 Random클래스는 객체를 만들어야 사용할수 있어서 좀 햇갈립니다
둘다 같은 자바 API 가 아닌가요?
만약 둘다 같은 자바 API라면 이렇게 다르게한 이유가 궁금합니다.
어떤 기준이 있는건가요 아니면 그냥 클래스 정의한사람 마음인가요?
# 자바 API 가져오기 - Random
#### CODE <a class='btn btn-default' href='/codes/41705'>Link</a>
```
// 자바 API를 불러옴
import java.lang.Math;
//import java.util.Random;
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
// 변수 생성 및 주사위 던지기
int a = DieA.roll();
int b = DieB.roll();
// 결과 출력
System.out.printf("A: %d\n", a);
System.out.printf("B: %d\n", b);
}
}
class DieA {
// 1 부터 6사이 정수를 반환 [참고] https://cloudstudying.kr/challenges/348
public static int roll() {
double r = Math.random() * 6; // 0.0 <= r < 6.0
int randInt = (int) r; // 0, 1, 2, ..., 5
return randInt + 1; // 1, 2, 3, ..., 6
}
}
class DieB {
public static int roll() {
/* Random 클래스를 활용하여 주사위의 눈값(1 ~ 6)을 반환하시오.*/
Random random=new Random();
return random.nextInt(5)+1;
}
}
```
#### INPUT
```
```
#### OUPUT
```
A: 6
B: 5
```
goodlife1359님의 답변
## 메서드 호출방식
static 이 붙은 메서드의 경우 클래스명.메서드명 으로 호출합니다.
static이 붙지 않은 메서드의 경우 객체를 생성하여 메서드를 호출합니다..
Math 클래스에 선언된 Random 메서드는 static 이 붙었기 때문에 Math.random() 으로 호출해야 합니다.
Math.random()
Random 클래스에 선언된 nextInt 메서드의 경우 static 이 붙지 않았기 때문에 Random 객체를 생성하여 메서드를 호출해 줘야 합니다.
Random random=new Random();
random.nextInt(5)