1. 결합 방향과 우선순위에 대하여 설명하시오.
- java 의 연산기호들에는 우선순위가 있고 순위가 높은 것들부터 컴퓨터가 처리한다.
- 우선순위가 같은 경우에는 결합 방향에 따라서 처리순서가 결정된다.
2. "1초과 100미만인가?" 를 코딩 하면?
int x = 30; //미지수 정수 x 에 대하여,
boolean result = (x > 1 && x < 100); //x 가 1 초과 100 미만이면 true. 아니면 false.
System.out.println(result); //result 를 출력.
3. "2의 배수 또는 3의 배수?" 를 코딩 하면?
int x = 30; //미지수 정수 x 에 대하여,
boolean result = ((x % 2 == 0) || (x % 3 == 0)); //x 가 2의 배수거나 3의 배수면 true. 아니면 false.
System.out.println(result); //result 를 출력.
4. && 와 || 설명하시오.
- && 은 양측의 값이 모두 true 일 경우에만 true 를 return 하고 그렇지 않은 경우에는 false 를 return 한다. 즉 왼쪽값이 false 인 경우에는 true 가 될 수 없으므로 false 를 return 하고 연산을 중단한다.
- || 은 양측의 값이 모두 false 일 경우에만 false 를 return 하고 그렇지 않은 경우에는 true 를 return 한다. 즉 왼쪽값이 true 인 경우에는 false 가 될 수 없으므로 true 를 return 하고 연산을 중단한다.
5. 아래의 프린트 결과를 예측 하시오.
class SCE {
//
public static void main(String[] args) {
//
int num1 = 0;
//
int num2 = 0;
//
boolean result;
//
//
//
result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
//
System.out.println("result = " + result); //1번
//
System.out.println("num1 = " + num1); //2번
//
System.out.println("num2 = " + num2 + '\\n'); // " //3번
//
//
//
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
//
System.out.println("result = " + result); //4번
//
System.out.println("num1 = " + num1); //5번
//
System.out.println("num2 = " + num2); //6번
//
}
//
}
- 1번: "result = false"
- 2번: "num1 = 10"
- 3번: "num2 = 0
"
- 4번: "result = true"
- 5번: "num1 = 20"
- 6번: "num2 = 0"
6.아래가 에러가 나는 이유를 설명하고, 수정 하시오.
short num1;
//
short num = -num;
7. 전위 증가 연산자와 후위 증가 연산자의 차이는?
- 전위증가연산자(++i): 먼저 값을 증가시키고 연산한다.
- 후위증가연산자(i++): 먼저 연산하고 값을 증가시킨다.
8. 아래의 비트 연산자 4가지를 설명하시오.
- & : AND. 양측이 모두 1 이면 1 이 return 된다.
- | : OR. 한 쪽이라도 1 이면 1 이 return 된다.
- ^ : XOR. 양측의 값이 다르면 1 이 return 된다.
- ~ : NOT. 비트를 반전시킨다.
8-2. 각각의 비트를 대상으로 연산을 진행하고, 각 비트를 대상으로 진행된 연산 결과를 묶어서 하나의 연산 결과 반환한다.
int bits1 = 0b1111; //15
int bits2 = 0b1010; //10
//
int result1 = bits1 & bits2;
int result2 = bits1 | bits2;
int result3 = bits1 ^ bits2;
int result4 = ~bits1;
int result5 = ~bits2;
//
System.out.println("bits1 = " + bits1);
System.out.println("bits2 = " + bits2);
//
System.out.println("result1 = " + result1 +
", result2 = " + result2 +
", result3 = " + result3 +
", result4 = " + result4 +
", result5 = " + result5);
9. 아래의 쉬프트 연산자에 대하여 설명하시오.
>>
: 2진수 메모리값을 오른쪽으로 옮긴다. 값이 빠진 빈 공간은 0으로 채운다.
<<
: 2진수 메모리값을 왼쪽으로 옮긴다. 값이 빠진 빈 공간은 0으로 채운다.
10. 아래의 출력값을 예측하시오.
class AddNum {
//
public static void main(String[] args) {
//
int result = 3 + 6;
//
System.out.println("3 + 6 = " + result); //1번
//
//
//
result += 9;
//
System.out.println("3 + 6 + 9 = " + result); //2번
//
//
//
result += 12;
//
System.out.println("3 + 6 + 9 + 12 = " + result); //3번
//
}
//
}
- 1번: "3 + 6 = 9"
- 2번: "3 + 6 + 9 = 18"
- 3번: "3 + 6 + 9 + 12 = 30"