* 자바의 정석 공부 및 연산자에 관한 연습문제 풀이
- byte < int 이므로, 형변환 생략 불가.
- byte < char 이므로, 형변환 생략 가능.
- char의 범위는 0 ~ 65535,
- short의 범위는 -32768 ~ 32767로 다르기 때문에 형변환 생략불가.
- long < float 이므로, 형변환 생략 가능.
- char < int 이므로, 형변환 생략 가능.
class Exercise3_2 {
public static void main(String[] args) {
int x = 2;
int y = 5;
char c = 'A'; // 'A' 65 의 문자코드는
System.out.println(1 + x << 33);
System.out.println(y >= 5 || x < 0 && x > 2);
System.out.println(y += 10 - x++);
System.out.println(x+=2);
System.out.println( !('A' <= c && c <='Z') );
System.out.println('C'-c);
System.out.println('5'-'0');
System.out.println(c+1);
System.out.println(++c);
System.out.println(c++);
System.out.println(c);
}
}```
class Exercise3_3 {
public static void main(String[] args) {
int num = 456;
System.out.println(/* (1) */);
}
}
456 / 100 -> 4
4 100 -> 400
111 / 100 -> 1
1 100 -> 100
class Exercise3_4 {
public static void main(String[] args) {
int numOfApples = 123; // 사과의 개수
int sizeOfBucket = 10; // ( ) 바구니의 크기 바구니에 담을 수 있는 사과의 개수
int numOfBucket =(/* (1) */) ;
System.out.println("필요한 바구니의 수 :"+numOfBucket);
}
}
- 소수점 첫째 자리에 0.5를 더하면, Math.round는 값을 무조건 올림하여 반환.
- 삼항연산자를 사용.
Hint:삼항 연산자를 두 번 사용하라.
class Exercise3_5 {
public static void main(String[] args) {
int num = 10;
System.out.println(/* (1) */);
}
}
- 연산자를 사용하면 2가지의 경우의 수를 처리할 수 있다.
- 삼항연산자를 사용하면 3가지 경우의 수를 처리할 수 있다. num의 값이 0보다 크면, '양수'를 출력하지만, num의 값이 0보다 작거나 같으면 괄호안의 삼항연산자가 수행 된다.
public class Exercise3_6 {
public static void main(String[] args) {
int fahrenheit = 100;
float celcius = (/* (1) */);
System.out.println("Fahrenheit:"+fahrenheit);
System.out.println("Celcuis:"+celcius);
}
}
먼저 화씨를 섭씨로 바꾸는 공식은 '5/9f * (fahrenheit - 32)'이다. 5/9의 결과 는 0이기 때문에 두 피연산자 중 어느 한 쪽을 반드시 float나 double로 해야만 실수 형태의 결과를 얻을 수 있다. 그래서 정수형 리터럴인 9대신 float타입의 리터럴인 9f를 사용 하였다.
- float celcius = (int)((5/9f (fahrenheit-32)) 100 + 0.5) / 100.0f;
소수점 셋째자리에서 반올림을 하려면 다음의 과정을 거쳐야한다.
- 100 . 값에 을 곱한다
37.77778 * 100
- 1 0.5 . 의 결과에 를 더한다
3777.778 + 0.5 → 3778.278
- 2 int . 의 결과를 타입으로 변환한다
(int)3778,278 → 3778
- 3 100f .(100 .) 의 결과를 로 나눈다 으로 나누면 소수점 아래의 값을 잃는다
3778 / 100f → 37.78
연산자쪽을 공부하며 풀어보면서 현타가 많이왔다... 깊게 갈수록 알아야 할것들이 많지만, 지금은 전체적인 사용법이나
흐름을 이해하는데 더 집중해야겠다.