개발공부/JAVA

[JAVA] Casting 하는 법, (int)의 정체를 알아내다

jnnjnn 2024. 1. 25. 00:47

 

public class Casting {
	public static void main(String[] args) {
		
		double a = 1.1;
		double b = 1;
		double b2 = (double) 1;
		System.out.println(b);
		
//		int c = 1.1;
		double d = 1.1;
		int e = (int) 1.1;
		System.out.println(e);
		int e = Math.floor(1.1);
		
		String f = Integer.toString(1);
		System.out.println(f.getClass());
	}
}

 

 

지난 시간엔 자바가 데이터 타입별로 변수를 다르게 설정한다는 것을 배웠다.

이번에는 그 정의를 깨버리고 싶을 경우에 사용하는 Casting이란 것이 있다는 걸 알게 되었다.

 

처음에 double을 int로 바꾸는 것을 예제로 보여 주셔서

Math.floor 함수를 사용해서 int e = Math.floor(1.1); 같은 방법을 생각했는데

오류가 나는 걸 보니 결과값이 중요한 게 아니라 처음에 담은 데이터타입이 중요한 것 같다.

 

또, 인터넷에서 보고 한 주사위 코드 결과값이 1만 나오는지 알아냈다

처음엔 int a = (int) Math.random()*6 + 1; 처럼 코드를 짰는데

소수점을 다 버리는 결과가 돼서 0+1로 1이 나왔던 것 .. (이게 맞는지는 모르겠지만) 괄호를 넣어주니 해결되었다!

int a = (int) (Math.random()*6 + 1);
		System.out.println(Math.floor(a)); // 주사위(실패)