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

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

댓글