개발을 할 떄 가장 많이 쓰이는 기능 중에 하나는 아마도 랜덤 숫자를 구하는 작업 일 것이다.
예전에는 Math.random()을 많이 이용하였으나, 요즘은 Random클래스를 많이 이용한다.


- Math.random()과 Random 클래스의 차이

> Math.Random()

Random()메소드는 return 타입이 double형으로, double 타입의 임의의 수를 발생한다.
가이드를 보면 static이고, 변환 타입이 double인 것을 확인할 수 있다.

 

Random()메소드는 static으로 선언되었기 때문에 위와 같이 객체 생성 절차 없이
double d = Math.random();
바로 Math의 Random()메소드를 실행시킴으로써 랜덤 숫자를 구할 수 있다.

하지만, return 타입이 double형 이기 때문에 결과는 0.xxx... 과 같은 소수값으로 반환된다.
따라서 결과값에 '*10 '(곱하기 10) 을 해주는 작업이 필요하다.


double d = Math.random();
System.out.println(d);

int di = (int)(d*10);
System.out.println(di);

다음과 같이 결과에 10을 곱해주고, int형으로 명시적 형변환을 해준다음 사용해야 한다.


결과: 
0.59656663..(랜덤값)
5

 


> Random 클래스

Random 클래스는 많이 쓰이는 클래스이고 return 타입이 int이므로 사용법이 아주 간단하다.

Random클래스는 Math 클래스와 다르게 직접 new생성자를 이용하여 객체생성 후 사용한다.
또한 return 타입이 int이다.

위 이미지를 보면 Random클래스의 nextInt메소드는 int형으로 bound값을 파라미터로 받는다.
따라서, random.nextInt(100);  을 실행시키면
1부터 100이하의 정수를 return 해준다.


Random random = new Random();
int i = random.nextInt(100);
System.out.println(i);

결과:
42(랜덤값)

 

 


- Scanner 클래스

키보드에서 타이핑하는 문자열 또는 입출력 프로그래밍에서 문자열을 읽어올때 사용된다.

Scanner scanner new Scanner(System.in);

다음은 선언부이다.
new생성자를 이용해 Scanner 객체를 생성해주면서 매개변수로 "System.in"을 넣어주어야 한다.

int i = scanner.nextInt();            //정수를 입력받는다.
String str = scanner.next();        //문자열을 입력받는다.
String strln = scanner.nextLine();  //'개행문자(\n)'를 만나기 전까지 문자열을 입력받는다.

 

 


- Wrapper 클래스

Wrapper클래스는 기초데이터를 객체데이터로 변화시키는 클래스이다. 

 


Integer integer = new Integer(10);

int i = 10;

 

위 두줄은 결과적으로 같은 코드이지만 위에는 객체(Object)자료형이고 밑에는 기초자료형이다.
위 이미지를 보면 객체자료형을 기초자료형으로 변환시켜 넣어주기위해 
return 타입이 int인 integer.intValue()메소드를 이용하는 것도 확인할 수 있다.

 

 

 

+ Recent posts