본문 바로가기
Programming/Java

[자바/Java] 메소드3 - Math 클래스

by 코딩하는 랄로 2023. 9. 28.
728x90

Math 클래스

자바에서는 기본적으로 제공하는 여러 객체들이 있다. 여기서 주목할 점은 클래스가 아닌 이미 클래스로 생성된 객체를 제공하기 때문에 별다른 선언없이 바로 사용할 수 있다는 점이다.

 

이렇게 기본적으로 제공되는 객체들은 여러 편리한 기능을 제공하고 있기 때문에 잘 활용할 경우, 여러 복잡한 작업들을 간단하게 작성할 수 있기 때문에 코드도 간결해진다.

 

그 중에 올림, 내림, 반올림 등 여러 수와 관련된 연산을 수행하는 메소드를 모아놓은 Math 클래스는 유용하게 사용되는 자바의 클래스 중 하나이다.

 

이번 글에서는 Math 클래스에서 자주 사용하는 메소드에 대해서 알아보겠다.

 

 

 

난수 발생시키기

난수란, 쉽게 말하여 무작위로 발생시킨 수이다. 자바의  Math 클래스에는 난수를 발생시키기 위한 메소드를 제공하고 있다. 사용방법으로는 다음과 같이,

 

double rand = Math.random();

 

Math.random()를 호출하여 사용하고 이 때에 리턴 값은 0.0과 1.0 사이의 무작위 double값을 반환한다. 만약, 이 메소드를 이용하여 1에서 10까지의 정수를 무작위로 int형 타입의 변수 num에 저장하고 싶다면 다음과 같이 코드를 작성할 수 있다.

 

int num = (int)(Math.random() * 9) + 1;

 

Math.random() * 9를 하게 되면 발생하게 되는 난수의 범위가 0.0~1.0에서 0.0~9.0으로 변경하게 되고 이를 casting을 이용하여 소수점을 날려버리고 1을 더하게 되면 난수의 범위가 1~10으로 변경이 되는 것이다.

 

이러한 방식을 이용한다면 여러 범위의 난수를 발생시킬 수 있다. 

 

 

Random 클래스

자바에서 난수를 발생시키는 여러 메소드를 제공하는 Random 클래스가 있다. 객체 형태로 기본적으로 제공 되는 것이 아니기 때문에 해당 클래스를 import하여 객체를 생성하여 주어야 한다.

 

import java.util.Random;

Random random = new Random();

 

Random 클래스의 메소드를 사용하여 1에서 10까지의 난수를 발생시키기 위해서는 nextInt() 메소드를 사용하여 구현할 수 있다.

 

int num = random.nextInt(9) + 1; nextInt(int) -> 0에서 넘겨받은 int까지 난수 생성

 

그 외에도 난수와 관련된 여러 메소드를 제공하고 있다.

 

 

 

올림 / 내림 / 반올림

Math 클래스에서는 double형 변수를 올림, 내림, 반올림한 정수를 반환하는 메소드도 제공을 한다. 사용방법으로는 각 해당 메소드의 매개변수로 double형 타입의 수를 넘겨주면 된다.

 

double num = 1.5;

//올림
int ceilNum = Math.ceil(num) // 2

//내림
int floorNum = Math.floor(num) // 1

//반올림
int roundNum = Math.round(num) // 2

 

 

 

 

최댓값 / 최솟값

Math 클래스에는 최댓값, 최솟값을 구해주는 메소드도 제공해준다. 사용방법으로는 두 개의 수를 파라미터로 넘겨 받아 두 수 중 큰 수를 반환하여 준다.

 

int n1 = 10;
int n2 = 20;

//두 수 비교
int maxTwo = Math.max(n1, n2);  //20
int minTwo = Math.min(n1, n2);  //10


//세 수 비교
int n3 = 30;
int maxThree = Math.max(Math.max(n1, n2), n3);  //30
int minThree = Math.min(Math.min(n1, n2), n3);  //10

 

위의 예시에서 알 수 있듯이, 삼항 연산자를 사용하지 않고도 간결하게 세 수 중 가장 큰수, 가장 작은 수를 구할 수 있다.

 

 

 

728x90