복합대입연산자
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
'코딩 > 수업 정리' 카테고리의 다른 글
자바 자습 (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 |
댓글