[ 연산자 + - ]
모든 프로그램에서는 데이터의 계산을 위해서 연산자를 사용합니다.
지금 배울 연산자는 다른 프로그래밍에서도 비슷하게 씁니다.
주의해서 보셔야 할 것은 연산자의 연산 순서입니다.
1. 최우선 연산자
. 클래스 또는 객체 소유의 변수, 메소드 등을 호출
[] 배열
()
2. 단항 연산자
! (논리부정), ~(비트반전), +/- (부호연산), ++/-- (선행증감)
3. 산술 연산자 +, -, /, *, % (모듈러: 나머지값)
4. 쉬프트 연산자 <<, >>, >>> (자릿수이동)
5. 관계 연산자 <, >, <=, >=, ==, !=
6. 비트 연산자 &, |, ^
7. 논리 연산자 $$, ||, !
8. 삼항 연산자 조건식 ? 참일때 : 거짓일때 ;
9. 배정대임 : =, +=, -=, %=, /= 등...
10. 후행증감
++/-- (후행증감)
package jun02;
public class Operator {
public static void main(String[] args) {
int num = 1;
int num2 = ++num; // 선행증감
// 계산순서 -> 2 1
System.out.println(num); // 2
System.out.println(num2); // 2
int num3 = ++num + ++num2;
// 3 1 2 1
System.out.println(num); // 3
System.out.println(num2); // 3
System.out.println(num3); // 6
num3 = --num + ++num2;
// 3 1 2 1
System.out.println(num); // 2
System.out.println(num2); // 4
System.out.println(num3); // 6
num3 = num-- - num2--;
// 2 3 1 3
System.out.println(num); // 1
System.out.println(num2); // 3
System.out.println(num3); // -2
num3 = num-- + --num2;
// 3 4 2 1
System.out.println(num); // 0
System.out.println(num2); // 2
System.out.println(num3); // 3
}
}
[모듈러]
package jun02;
public class Operator {
public static void main(String[] args) {
System.out.println(2 / 2); // 1 나눈 후 몫
System.out.println(3 / 2); // 1
System.out.println(4 / 2); // 2
System.out.println(2 % 2); //0 나눈 후 나머지 값
System.out.println(3 % 2); //1
System.out.println(4 % 2); //0
int ssnCode = 1;
int result = ssnCode % 2;
if (result == 0) {
System.out.println("당신은 여자 입니다.");
} else {
System.out.println("당신은 남자 입니다.");
}
System.out.println(1 % 2); // 1 나눌 숫자가 작으면 반환
System.out.println(2 % 2); // 0
System.out.println(3 % 2); // 1
System.out.println(4 % 2); // 0
System.out.println(5 % 2); // 1
System.out.println(6 % 2); // 0
/*
* 2로 나누면 나머지는 0~1 > 이진법 활용
* 3으로 나누면 나머지는 0~2
* 4로 나누면 나머지는 0~3
*/
}
}
[쉬프트 연산자]
package jun02;
public class Operator {
public static void main(String[] args) {
int sh = 2; // 10 (이진법)
System.out.println( Integer.toBinaryString(sh) ); // 10
System.out.println( Integer.toBinaryString(sh << 3) ); //10000
// 왼쪽으로 3칸 이동하고 빈칸은 0으로 채워라 -> 10000
sh = 10; // 1010
System.out.println( Integer.toBinaryString(sh) ); // 1010
System.out.println( Integer.toBinaryString(sh >> 2) ); // 10
// 오른쪽으로 2칸 이동하고 뒤의값은 자름 -> 10
sh = -1; // 1 (x32개) -> 자바는 32비트
System.out.println( Integer.toBinaryString(sh) ); // 1 (x32개)
System.out.println( Integer.toBinaryString(sh >> 2) ); // 1 (x32개)
// 오른쪽으로 2칸 이동하여 맨뒤 두자리 사라지고 앞의 빈칸은 1로 채워짐
System.out.println( Integer.toBinaryString(sh << 2) ); // 1 (x30개) + 00
System.out.println( Integer.toBinaryString(sh >>> 31) ); // 1
// 오른쪽으로 31칸 이동하고, 앞의 빈칸 채워지지 않음
int sh = -50;
System.out.println( Integer.toBinaryString(sh) );
// 11111111111111111111111111001110
System.out.println( Integer.toBinaryString(sh >> 2) );
// 11111111111111111111111111110011
System.out.println( Integer.toBinaryString(sh >>> 2) );
// 111111111111111111111111110011
System.out.println( Integer.toBinaryString(sh << 2) );
// 11111111111111111111111100111000
}
}
[선행증감/후행증감]
package jun02;
public class Test {
public static void main(String[] args) {
int num9 = 1;
System.out.println(num9); // 1
int num10 = num9--;
// 1 2
System.out.println(num9); // 0
System.out.println(num10); // 1
int num11 = num9-- + --num9;
// 3 4 2 1
System.out.println(num9); // -2
System.out.println(num10); // 1
System.out.println(num11); // -2 *****
}
}
package jun02;
public class Test {
public static void main(String[] args) {
int num9 = 1;
System.out.println("num9 = 1 : " + num9);
int num10 = num9--;
// 1 2
System.out.println("num10 = num9-- : " + num9);
System.out.println("num10 = num9-- : " + num10);
int num11 = num9-- + --num9;
// 3 4 2 1
System.out.println("num11 = num9-- + --num9 : " + num9); //-2
System.out.println("num11 = num9-- + --num9 : " + num10); // 1
System.out.println("num11 = num9-- + --num9 : " + num11); //-2 *****
}
}
num9 = 1 : 1
num10 = num9-- : 0
num10 = num9-- : 1
num11 = num9-- + --num9 : -2
num11 = num9-- + --num9 : 1
num11 = num9-- + --num9 : -2 *****
'국비과정 > JAVA (기초)' 카테고리의 다른 글
20230605 _[3일차]_02. 연산자 (0) | 2023.06.06 |
---|---|
20230605 _[3일차]_01. 데이터타입 복습 (0) | 2023.06.06 |
20230602 _[2일차]_03. 데이터타입2 (0) | 2023.06.04 |
20230602 _[2일차]_02. 데이터타입1 (0) | 2023.06.04 |
20230602 _[2일차]_01. 변수 (0) | 2023.06.04 |