본문 바로가기
코딩/수업 정리

20.11.26 Thu [004]

by 6^6 2020. 11. 26.
728x90

복합대입연산자

num = num +5;

(같은 식) num +=5;

 

class Hello{
	public static void main(String[] args) {

		short num = 10;
		num = (short)(num + 77L); 
		int rate = 3;
		rate = (int)(rate*3.5); //double형으로 잡은걸 int로 강제형변환. 소수점 잘림
		System.out.println(num);
		System.out.println(rate);
		
		num=10;
		num+=77L;
		rate = 3;
		rate *= 3.5;
		System.out.println(num);
		System.out.println(rate);
		
	}
}

 

 

연산자 사용방법

class Hello{
	public static void main(String[] args) {

		int num1 = 11;
		int num2 = 22;
		boolean result;
		
		result = (1<num1)&&(num1<100);
		System.out.println("1초과100미만인가?"+result);
		
		result = ((num2%2)==0)||((num2%3)==0);
		System.out.println("2또는 3의 배수인가?"+result);
		
		result = !(num1 != 0);
		System.out.println("0인가?"+result);
	}
}

 

연산자 결과값

class Hello{
	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);
		System.out.println(num1); //false
		System.out.println(num2);//true
		
		result = ((num1 += 10)<0)||((num2+=10)>0);
		System.out.println("result"+result);
		System.out.println(num1);
		System.out.println(num2);
		
	}
}

 

++num1 과 num1++차이

class Hello{
	public static void main(String[] args) {

		int num1 = 7;
		System.out.println(num1++); //7
		System.out.println(++num1); //9
		System.out.println(++num1); //10
		System.out.println(num1); //10
		
	}
}

 

헷갈리는 후위연산자, 전위연산자 연산결과

class Hello{
	public static void main(String[] args) {

		int num1 = 7;
		int num2 = 3;
		int result;
		
		result =(++num1)-5; //8-5
		System.out.println(result);
		
		System.out.println(num1);
		
		result = (num1++)-5; //8-5
		System.out.println(result);
		
		System.out.println(num1);
		
		result = (num1++)-5; //9-5
		System.out.println(result);
		

	}
}
class Hello{
	public static void main(String[] args) {

		int x =10;
		
		int y = x-- + 5 + --x; //9+5+9
		
		System.out.println(y);
	}
}

 

 

오늘의 문제

1. 결합방향과 우선순위에 대하여 설명하시오.

우선순위 : 먼저 연산되는 순위.
결합방향 : 우선순위가 같은 경우 우선적으로 연산하는 방향. 

 

2. 1 초과 100 미만인가? 를 코딩을 하게 되면?

int num = 정수값;

boolean result;

result = num>1&&num<100;

System.out.println(result);

 

3. 2의 배수 또는 3의 배수? 를 코딩을 하게 되면?

int num=정수값;

System.out.println(num%2==0); //(true값이 나오면 2의 배수)

System.out.println(num%3==0 ); //(true값이 나오면 3의 배수)

 

4. && 와 || 설명하시오.

&&(and) - 둘 중 하나라도 false 값이면 false출력

||(or) - 둘 중 하나만 true값이어도 true출력

 

 

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);
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2 + '\n');

		result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
		System.out.println("result = " + result);
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		}
}

result = false
num1 = 10 //앞에있는 식에서 이미 false값이 나왔기 때문에 num1의 값만 연산이 된다.
num2 = 0


result = true
num1 = 20 //앞에있는 식에서 이미 true값이 나왔기 때문에 num1의 값만 연산이 된다.
num2 = 0

 

6.아래가 에러가 나는 이유를 설명하고, 수정하시오

short num;

short num = -num;

 

//이유

변수 num을 두번이나 선언해서,

num값을 int로 인식하기때문에 short로 강제형변환해준다.

//수정

short num = 0;
num = (short) -num ;

 

7.전위증가 연산자와 후위증가 연산자의 차이는?

전위증가연산자 ++num : 증가를 먼저한 후 출력

후위증가연산자 num++: 하나의 실행 단위가 끝나고 난 뒤(먼저 출력한 뒤) 증가

 

8.아래의 비트연산자 4가지를 설명하시오.

&  ^  |  ~

& : 비트가 모두 1이면 1로 반환
^ : 비트가 서로 다르면 1로 반환
| : 비트가 하나라도 1이면 1로 반환
~ : 0↔1 로 바꿔서 반환

 

9.아래의 쉬프트 연산자에 대하여 설명하시오. << , >>

<< 지정한 수만큼 비트를 전부 왼쪽으로 이동시킴

>> 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴

 

10.전위연산자와 후위연산자에 대하여 설명하시오.

전위연산자(++num,--num)는 변수가 바로 1 증가(감소)

후위연산자(num++,--num)는 변수가 자신을 복사한 뒤 1증가(감소)하고 복사값 반환

 

 

11.아래의 출력값을 예측하시오. 

class AssignSteResult {
	public static void main(String[] args) {
		int num1 = 10, num2 = 20, num3 = 30;
		num1 = num2 = num3;
        /*
          = 연산자는 결합 방향이 오른쪽에서 왼쪽으로 진행된다. 
          따라서 위의 문장은 다음과 같다. 
          num1 = (num2 = num3);        
        */  
        System.out.println(num1);	
        System.out.println(num2);
        System.out.println(num3);
    }
}

//num3의 값(30)이 num2로, 그 값이 num1으로 넣어짐.

30

30

30

 

12.아래의 출력값을 예측하시오.

class SCE {
	public static void main(String[] args) {
		
		int num1 = 0;
		int num2 = 0;
		boolean result;

		num1 += 10;
		num2 += 10;
		result = (num1 < 0) && (num2 > 0);

		System.out.println("result = " + result);
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2 + '\n'); 
        
		num1 += 10;
		num2 += 10; 
		result = (num1 > 0) || (num2 > 0);

		System.out.println("result = " + result);
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2); 
		}	
}

result = false

num1 = 10

num2 = 10 //출력하기 전에 이미 더해주므로 둘다 증가

 

result = true

num1 = 20

num2 = 20 //출력하기 전에 이미 더해주므로 둘다 증가

 

 

13.아래의 출력값을 예측하시오.

class AddNum {
	public static void main(String[] args) {

		int result = 3 + 6;
		System.out.println("3 + 6 = " + result);

		result += 9;
		System.out.println("3 + 6 + 9 = " + result);

		result += 12; System.out.println("3 + 6 + 9 + 12 = " + result);
		System.out.println("3 + 6 + 9 + 12 = " + result);
		}
}

3 + 6 = 9

3 + 6 + 9 = 18

3 + 6 + 9 + 12 = 30

 

728x90

'코딩 > 수업 정리' 카테고리의 다른 글

자바 자습  (0) 2020.11.28
20.11.27 Fri [005]  (0) 2020.11.27
20.11.25 Wed [003]  (0) 2020.11.25
20.11.24 Tue [002]  (0) 2020.11.24
20.11.23 Mon [001]  (0) 2020.11.23

댓글