복합대입연산자
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 |
댓글