안녕하세요 궁금한게 있어 질문드립니다. 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 ```
## 메서드 호출방식 static 이 붙은 메서드의 경우 클래스명.메서드명 으로 호출합니다. static이 붙지 않은 메서드의 경우 객체를 생성하여 메서드를 호출합니다.. Math 클래스에 선언된 Random 메서드는 static 이 붙었기 때문에 Math.random() 으로 호출해야 합니다. Math.random() Random 클래스에 선언된 nextInt 메서드의 경우 static 이 붙지 않았기 때문에 Random 객체를 생성하여 메서드를 호출해 줘야 합니다. Random random=new Random(); random.nextInt(5)