Java 14 산술변환

bitcogo·2022년 4월 8일
0

사칙 연산자
System.out.println(10/4); //2.5아니고 2
int 나누기 int라서 값도 int가 나온다
System.out.println(10/4.0f); //int나누기float는 2.5f
float가 int보다 크니까 int를 값손실이 적은 float로 바꿔서 나눠진다.

산술변환: 연산전에 피연산자의 타입을 일치시키는 것
1. 두 피연산자의 타입을 같게 일치시킨다. 보다 큰타입으로 일치(값손실 방지)
long + int -> long + long
float + int -> float + float
double + float -> double + double

2.피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
byte + short -> int + int
char + short -> int + int

'2'-'0' = 2 ....아스키코드 '2' = 50 '0'=48
50 - 48 = 2
이래서 문자를 숫자로 바꾸는 방법이 '0'을 빼주는 것이다.

	int a = 1_000_000; //1백만 10의 6제곱
	int b = 2_000_000; //2백만 10의 6제곱??
	
	long c = a*b; //이상한 값나옴. 왜냐면 a*b는 10^12. 
	//int범위는 10^9라서 이미 값 자체가 잘못되서(오버플로우) 더 큰 long변수에 넣어도 이상하다.
	
	long d = (long)a*b; //둘중 하나를 long값으로 바꾸면 됨.
	
	System.out.println(c);
	System.out.println(d);
profile
공부하고 기록하는 블로그

0개의 댓글