728x90
- [인프런]자바 프로그래밍 입문강좌 6강 연산자 정리입니다.
- 프로그램이 실행될 때 컴퓨터(CPU)에게 계산(연산) 업무를 시키기 위한 방법에 대해서 학습합니다.
- 컴퓨터의 구조는 크게 CPU, 메모리, 하드디스크로 구성된다.
- 여기서 CPU가 연산 업무를 담당한다.
- 메모리는 하드디스크에 있는 데이터를 CPU로 이동시키는 역할을 한다.
6.1 피연산자 개수에 의한 연산자 구분
- 피연산자 개수에 따라서 단항, 이항 그리고 삼항 연산자로 구분할 수 있다.
- 단항 연산자
- 피연산자가 하나 존재
- +x, -x, !x
- +, -, ! : 연산자
- x : 피연산자
- 이항 연산자
- 피연산자가 두개 존재
- x=y, x<y, x!=y
- =, <, != : 연산자
- x, y : 피연산자
- 삼항 연산자
- 피연산자가 세개 존재
- 조건식:true?false
- :, ? : 연산자
- 조건식, true, false : 피연산자
- 단항 연산자
6.2 대입 연산자
- 대입 연산자는 오른쪽의 결과를 왼쪽에 대입(할당)한다.
- '='는 수학에서 '오른쪽 값과 왼쪽 값이 같다'라는 의미 이지만, 프로그램에서는 '오른쪽 값을 왼쪽에 대입'하는 의미로 쓰인다.
- 프로그램에서 '오른쪽과 왼쪽이 같다'라는 의미의 연산자는 '=='이다.
int x = 10;
int y = 20;
// 대입 연산자
System.out.println("x = " + x);
System.out.println("y = " + y);
x = y;
System.out.println("x = " + x);
System.out.println("y = " + y);
// 결과
// x = 10
// y = 20
// x = 20
// y = 20
- int x = 10;
- x에 10을 대입(할당)한다.
- x = y;
- y의 값을 x에 대입(할당)한다.
6.3 산술연산자
- 피연산자를 이용해서 +, -, *, /, % 등을 수행한다.
x = 10; y = 20;
// 산술 연산자
System.out.println("x + y = " + (x+y)); // + : 덧셈
System.out.println("x - y = " + (x-y)); // - : 뺄셈
System.out.println("x * y = " + (x*y)); // * : 곱셈
System.out.println("x / y = " + (x/y)); // / : 나눗셈
System.out.println("x % y = " + (x%y)); // % : 나머지
// 결과
// x + y = 30
// x - y = -10
// x * y = 200
// x / y = 0
// x % y = 10
- int 형과 int 형의 산술 연산의 값은 int 형
- 소수점까지 구하고싶다면 double형으로 형변환이 필요하다.
6.4 복합 대입연산자
- 산술 연산자와 대입 연산자를 결합한 연산자이다.
// 복합대입 연산자
x = 10;
System.out.println("x += 10 : " + (x += 10)); // += : 더하고 대입
x = 10;
System.out.println("x -= 10 : " + (x -= 10)); // -= : 빼고 대입
x = 10;
System.out.println("x *= 10 : " + (x *= 10)); // *= : 곱하고 대입
x = 10;
System.out.println("x /= 10 : " + (x /= 10)); // /= : 나누고 대입
x = 10;
System.out.println("x %= 10 : " + (x %= 10)); // %= : 나머지를 대입
// 결과
// x += 10 : 20
// x -= 10 : 0
// x *= 10 : 100
// x /= 10 : 1
// x %= 10 : 0
- x += 10;
- => x = x + 10;
- x에 10을 더한 값을 x에 대입
6.5 관계 연산자
- 두 개의 피연산자를 비교해서 참/거짓의 결론을 도출한다.
// 관계 연산자
x = 10; y = 20;
System.out.println("x > y : " + (x > y)); // x>y : x가 y보다 크면 참
System.out.println("x < y : " + (x < y)); // x<y : x가 y보다 작으면 참
System.out.println("x >= y : " + (x >= y)); // x>=y : x가 y보다 크거나 같으면 참
System.out.println("x <= y : " + (x <= y)); // x<=y : x가 y보다 작거나 같으면 참
System.out.println("x == y : " + (x == y)); // x==y : x와 y가 같으면 참
System.out.println("x != y : " + (x != y)); // x!=y : x와 y가 같지 않으면 참
// 결과
// x > y : false
// x < y : true
// x >= y : false
// x <= y : true
// x == y : false
// x != y : true
6.6 증감 연산자
- 1만큼 증가 하거나 감소를 수행한다.
// 증감 연산자
// 1. 전위 연산자
x = 10;
System.out.println("++x : " + (++x)); // ++x : x값 먼저 1 증가 후 출력
x = 10;
System.out.println("--x : " + (--x)); // --x : x값 먼저 1 감소 후 출력
// 2. 후위 연산자
x = 10;
System.out.println("x++ : " + (x++)); // x++ : x값 먼저 출력 후 1 증가한 값 메모리 저장
System.out.println("x : " + x);
x = 10;
System.out.println("x-- : " + (x--)); // x-- : x값 먼저 출력 후 1 감소한 값 메모리 저장
System.out.println("x : " + x);
// 결과
// ++x : 11
// --x : 9
// x++ : 10
// x : 11
// x-- : 10
// x : 9
- ++x
- => x = x + 1;
6.7 논리 연산자
- 피연산자의 논리곱(AND), 논리합(OR), 논리부정(NOT)을 수행한다.
// 논리 연산자
boolean b1 = false;
boolean b2 = true;
System.out.println("b1 && b2 : " + (b1 && b2)); // a&&b(논리곱) : a와 b가 모두 참이면 참
System.out.println("b1 || b2 : " + (b1 || b2)); // a||b(논리합) : a와 b 중 하나라도 참이면 참
System.out.println("!b1 : " + !b1); // !a(논리부정) : a의 상태를 부정
System.out.println("!b2 : " + !b2);
// 결과
// b1 && b2 : false
// b1 || b2 : true
// !b1 : true
// !b2 : false
6.8 조건(삼항) 연산자
- 삼항 연산자로 두개의 피연산자 연산 결과에 따라서 나머지 피연산자가 결정된다.
- 조건식 ? 식1 : 식2
- 조건식이 참이면 식1이 실행되고, 조건식이 거짓이면 식2가 실행된다.
// 조건(삼항)연산자
x = 10; y = 20;
int result = 0;
result = (x > y) ? 100 : 200; // false
System.out.println("result: " + result);
result = (x < y) ? 100 : 200; // true
System.out.println("result: " + result);
result = (x == y) ? 100 : 200; // false
System.out.println("result: " + result);
// 결과
// result: 200
// result: 100
// result: 200
6.9 비트 연산자
- 데이터를 비트(bit) 단위로 환산하여 연산을 수행하며, 다른 연산자보다 연산 속도가 향상된다.
// 비트 연산자
x = 2;
y = 3;
System.out.println("x & y : " + (x & y)); // a&b(AND 연산) : a와 b가 모두 1이면 1
System.out.println("x | y : " + (x | y)); // a|b(OR 연산) : a와 b 중 하나라도 1이면 1
System.out.println("x ^ y : " + (x ^ y)); // a^b(XOR 연산) : a와 b가 같지 않으면 1
// 결과
// x & y : 2
// x | y : 3
// x ^ y : 1

- 속도 차이가 그렇게 크지는 않기 때문에 자바에서는 잘 사용되지는 않는다.
728x90
'Java' 카테고리의 다른 글
| 7강 배열 (0) | 2021.07.31 |
|---|---|
| 5강 특수 문자와 서식 문자 (0) | 2021.07.30 |
| 4강 기본자료형 (0) | 2021.07.30 |
| 3강 변수 (0) | 2021.07.30 |
| 2강 Java 프로그램의 실행 구조 (0) | 2021.07.28 |