제니노트

연산자 정리 [자바] 본문

Java/Java 입문

연산자 정리 [자바]

yangjennie 2023. 7. 21. 22:53
반응형

1. 연산자 우선순위

증산시논비관삼대 

(1+x<<33) 

int타입이므로 33의 경우 32를 넘어가므로 33-32를 해준다.

long타입의 범위 일때에 넘어갔을 땐 64를 빼주면된다.

산술이 먼저이므로 + 먼저 << 그다음으로 연산해주기

<< 은 2^x 곱셈

>> 2^x 나눗셈

3<<1 이므로 6이 된다.

 

2. && || 의 경우

&&는 ||보다 우선순위가 높다.

 

3. '0' 은 ASCII로 48

'A'는 65 

'a'는 97

 

4. 나머지가 있을 때 수를 올림하는 방법

나머지 연산자를 이용해 나눗셈연산에서 나머지가 있는지 확인후 나눈 수에 1더해주기

a/b + (a%b>0? 1:0)

 

5. 삼항연산자를 이용하면 2가지 경우의 수 처리가능

삼항연산자에 또 삼항연산자를 포함시키면 3가지 경우의 수 처리 가능

수에 따라 양수, 음수, 0을 출력할 때

num>0 ? "양수" : (num<0? "음수" : "0")

꼴로 표현 가능

 

6. 백의 자리 이하를 버리는 법

나눗셈 연산자는 반올림하지 않고 버린다

예를 들어 456을 백의 자리 이하를 버리고 싶다면

456/100*100 

처럼 하면 됨

 

7. Math.round() 없이 화씨 -> 섭씨 온도 변환 시  셋째자리에서 반올림 하기 

 

변환 공식 : C = 5/9 * (F-32)

5/9의 결과는 0 이므로 두 피연산자 중 어느 한쪽을 반드시 float or double로 바꿔줘야한다.

따라서 정수형 리터럴인 9대신 9f로 f를 붙여준다

그 다음 소수점 셋째자리에서 반올림 할 때는

1. float는 소수점 이하 5자리 까지 표현가능하므로

여기서 100을 곱해준다.

37.77778 * 100 = 3777.778

2. 0.5 더해주기  

그럼 3778.278로 반올림이된다. 

3. int로 변환시

3778 이 됨

4. 3의 결과를 100f로 나눈다. 그럼 따라서 37.78

 

따라서 int(5/9f*(F-32))*100+0.5) / 100f 

 

8. 이항연산은 두연산자의 타입을 일치시킨 후 연산을 수행

그리고 int보다 작은 type은 int로 자동형변환된다.

byte a = 10; 

byte b = 20;

byte c =(byte) a+b;

변수 a와 b는 모두 byte 타입으로 이항연산인 덧셈연산을 하기 전 int 타입으로 자동형변환된다.

int와 int의 덧셈이므로 연산결과는 int가 된다.

int 타입의 값 4byte를 1byte 짜리 byte type에 담아야 하므로 (byte)로 형변환 시켜주기.

 

ch 타입도 위와 같은 원리이다.

 

float f = 3/2f와 같이

연산결과를 실수로 얻고 싶다면 적어도 두 피연산자 중 하나가 float/double 중 하나의 실수 타입이어야함.

 

long l = 3000*3000*3000L;

만약 피연산자가 세개 다 int 일 경우 연산결과는 2*10^9 Int는 약 10의 9승으로 표현가능

but 2*10^9승이므로 표현범위를 넘는다.

따라서 피연산자 중 적어도 한개에 L을 붙힌 것

 

9. 영문자인지 숫자인지 확인하는 법

ch에 문자가 담겨있다.

그렇다면

('a'<=ch && ch<= 'z') || //소문자인지

('A'<=ch&&ch<='Z') || //대문자인지

('0'<=ch&&ch<='9') // 숫자인지 

 

이렇게 판별하면 된다.

 

10. char형에 덧셈연산을 하면 Int형 으로 반환되므로 (char)을 붙혀 형변환을 해주어야한다.

 

 

 

참고 : 자바의정석 3장 연습문제 

반응형
Comments