본문 바로가기

All Categories/BE & Java

개발일지 #7 - Java Math.random(), 형 변환(Casting, Promotion)

반응형

Math.random()

Math 클래스의 random() 는 0.0 이상 1.0 미만의 난수를 생성하여, double 값을 반환하는 함수입니다.

// Math 클래스의 random() 메서드
// 메서드: 어떤 출력(리턴 타입) => double (0.0 ~ 1.0)
System.out.println(Math.random() * 10);
// 결과 값에 10을 곱해서 정수 부분을 만듦 (0 ~ 10)
System.out.println(Math.random() * 10);
// 결과 값에 45를 곱해서 정수 부분을 만듦 (0 ~ 45)
System.out.println(Math.random() * 45);
// 실수(double) => 정수(int) : 형변환(type conversion)
System.out.println((int) (Math.random() * 10)); // 0 이상 9 이하의 정수
System.out.println((int) (Math.random() * 10) + 1); // 1 이상 10 이하의 정수
System.out.println((int) (Math.random() * 45) + 1); // 1 이상 45 이하의 정수

따라서 위 코드와 같이 형변환 등을 통해, 원하는 정수 범위 내에서 난수를 생성할 수 있습니다.


형 변환 (type conversion)

int는 4byte, double은 8byte의 메모리를 가지는 자료형입니다. 따라서 int형의 변수의 값을 double형의 변수의 값에 대입할 때는 문제가 되지 않지만, double형의 변수의 값을 int형의 변수의 값에 대입할 때 문제가 생깁니다.

이 때 개발자의 책임 하에 강제적인 형 변환을 할 수 있습니다.

int int2 = double1; // 형변환 에러
int int2 = (int) double1; // 강제 형 변환

위 코드에서 첫 번째 문장은 형 변환 에러가 나기 때문에, 두 번째 문장과 같이 소괄호(()) 안에 변환하고자 하는 타입을 기재하여 강제적으로 변환할 수 있습니다.

Promotion (자동 형변환 / 묵시적 형변환)

 

Casting (강제 형변환 / 명시적 형변환)

 

 


배운 점

 

 

 

반응형