개발을 할 떄 가장 많이 쓰이는 기능 중에 하나는 아마도 랜덤 숫자를 구하는 작업 일 것이다.
예전에는 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()메소드를 이용하는 것도 확인할 수 있다.
'Java' 카테고리의 다른 글
자바 API 5 [InputStream,OutputStream] (0) | 2020.01.21 |
---|---|
자바 API 4 [StringTokenizer] (0) | 2020.01.20 |
자바 API 3 [Timer] (0) | 2020.01.20 |
자바 API1 [String, StringBuffer, StringBuilder, Calendar] (0) | 2020.01.19 |
배열의 정렬과 역정렬(오름차순, 내림차순)[Sort] (0) | 2019.12.27 |