KDT 풀스택 공식 3일차: JAVA 우선순위, 연산자

jk·2024년 1월 3일
0

kdt 풀스택

목록 보기
4/127

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;
  • 원인1: short num 이 -를 만나서 연산되기 위해서 literals 이 int 로 자동형변환됐다. (-num)이 int 가 됐기 때문에 short num 과 데이터 할당량 규격이 맞지 않아서 에러가 발생한다.
  • 원인2: num 이 초기화가 되지 않았기 때문에 literals 로 연산할 수도 없다.
  • 해결1: 먼저 num 을 초기화하고 명시적형변환을 이용해서 (-num)을 다시 short 로 casting 해준다.
    short num1;
    //short num = -num;
    short num = 3;
    num = (short)(-num);
    
  • 해결2: 아예 처음부터 num 을 int 로 변수선언하고 초기화한다.
    short num1;
    //short num = -num;
    int num = 3;
    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"
profile
Brave but clumsy

0개의 댓글