1. 연산자
- 연산 : 어떤 규칙에 따라 계산함
- 연산자 : 연산할 때 쓰는 기호
- 자바 연산자 : 자바 코드 내에서 연산을 처리할 때 쓰는 기호들
2. 연산자의 종류
연산자 | 연산기호 | 설명 | 비고 | |
1 | 산술연산자 | +, -, *, /, % | 사칙연산 및 나머지연산 | 값 |
2 | 증감연산자 | ++, -- | 데이터 값의 1증가 및 감소 | |
3 | 비트연산자 | &, |, ~, ^ | 비트 AND, OR, NOT, XOR | |
4 | 쉬프트연산자 | >>, <<, >>> | 비트단위의 이동 | |
5 | 비교연산자 | <, >, <=, >=, ==, != | 데이터의 크기 비교 | 참 또는 거짓 |
6 | 논리연산자 | &&, ||, !, ^ | 논리적 AND, OR, NOT, XOR | |
7 | 대입연산자 | =, +=, -=, *=, /=, &=, |=, >>=, <<=, >>>= |
산술연산 결과의 대입 (축약형 표현) | 실행 |
8 | 삼항연산자 | (참 또는 거짓)? x : y | 참인 경우 x, 거짓인 경우 y |
- 산술연산자 (+, -, *, /, %)
- 산술연산자의 규칙 : 두개의 할을 이용해 계산하고, 결과를 반환함
※ 반환(Return) : 연산식의 값을 돌려줘서 활용할 수 있게 해주는 것
// Example
System.out.println(6);
System.out.println(3 + 3); // 6
System.out.println(3 - 3); // 0
System.out.println(3 * 3); // 9
System.out.println(4 / 3); // 1 (몫)
System.out.println(7 % 3); // 2 (나머지)
// 이 연산식은 연산 결과값과 같음
// 연산자 우선순위 (곱나 > 더빼)
System.out.println(4 + 6 * 2 - 1);
// 수동적으로 우선순위 변경 가능 (소괄호 사용), (중괄호, 대괄호는 불가능)
System.out.println((4 + 6) * (2 - 1));
- 증감연산자 (++, --)
- 전위형(Postfix) : 연산 or 실행 전 증감 수행 (++변수명)
// Example
int num = 10;
num++; // 후위형 (postfix) : 선처리, 후연산
++num; // 전위형 (prefix) : 선연산, 후처리
System.out.println(num); // 12
int a = 20;
System.out.println(a++); // 20을 출력 (처리)하고, 증가
System.out.println(a); // 21
System.out.println(++a); // 22로 증가부터 시키고, 출력
System.out.println(a); // 22
int b = 10;
int c = b++; // 10을 c에 저장한 후, b를 11로 증가
int d = ++c; // c를 11로 증가 시킨 후, 11을 d에 저장
- 비트연산자 (&, |, ~, ^)
- 비트와 비트를 하나씩 연산
- & (AND) : 두 항의 비트가 1과 1일 때만 1로 처리
- | (OR) : 두 항의 비트가 0과 0일 때만 0으로 처리
- ^ (XOR) : 두 항의 비트가 서로 다를 때만 1로 처리
- ~ (NOT) : 단항의 비트를 모두 반전
※ 진수의 종류
- 10진수 : 열 개의 기호로 수를 표현하는 체계
- 16진수 : 열 여섯 개의 기호로 수를 표현하는 체계
- 8진수(Octal) : 여덟 개의 기호로 수를 표현하는 체계
- 2진수(Binary) : 두 개의 기호로 수를 표현하는 체계 (0, 1) (컴퓨터 메모리는 모두 비트로 표현)
- 정수 자료형에서 첫 번째 비트는 부호비트로, 부호를 나타냄(첫 번째 비트가 1이면 -, 0이면 +)
- 음수인 경우, 1을 뺀 다음 다시 반전시켜 절댓값을 구함
// Example
byte a = 2; // 00000010
byte b = 7; // 00000111
System.out.println(a & b); // 2
System.out.println(a | b); // 7
System.out.println(a & b); // 5
System.out.println(~a); // 11111101 : -3
- 쉬프트연산자 (<<, >>, >>>)
- 비트를 n칸씩 통째로 이동시킴 (부호비트는 유지)
// Example
System.out.println(a); // 00000010
System.out.println(a << 1); // 00000100
- 비교연산자 (<, >, <=, >=, ==, !=)
- 크기 비교 (>, <, >=, <=) : 데이터 크기의 대소 비교
// Example
int a = 3;
int b = 5;
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a >= b); // false
System.out.println(a <= b); // true
- 등가 비교 (==, !=) : 데이터 크기의 등가 비교
// Example
int a = 3;
int b = 5;
System.out.println(a == b); // false
System.out.println(a != b); // true
- 논리연산자 (&&, ||, !, ^)
- boolean 자료형의 값을 대상으로 연산
※ 불린(Boolean) : 참과 거짓을 의미하는 데이터 타입 (true or false로 반환)
- && (AND) : 각 항이 true일 때만 true를 반환
- || (OR) : 각 항이 false일 때만 false를 반환
- ^ (XOR) : 각 항이 서로 다를 때만 true를 반환
- ! (NOT) : true나 false를 반전시킴
// Example
boolean t = true;
boolean f = false;
System.out.println(t && t); // true
System.out.println(t && f); // false
System.out.println(!t); // false
※ 비교연산과 논리연산의 조합
// Example
int age = 24;
int money = 3000;
// 비교 연산이 언제나 논리 연산보다 우선
boolean result = age >= 20 && money >= 1250;
System.out.println(result); // true
// Example
int age = 11;
int height = 178;
System.out.println((age >= 12 && height >= 150)? "놀이기구 탑승!" : "탑승 불가!"); // 탑승 불가!
- 대입연산자 (=, +=, -=, *=, /=, &=, |=, >>=, <<=, >>>=)
- 왼쪽의 것을 오른쪽에 대입
※ 복합대입연산자 : 대입연산자 앞에 다른 연산자가 붙은 것
// Example
int a = 3;
a += 2
System.out.println(a); // 5
- 삼항연산자 ((참 또는 거짓)? x : y)
- if - else 문의 대체 형태
// Example
int a = (3 > 5)? 6 : 9;
System.out.println(a); // 9
int b = (5 > 3)? 10 : 20;
System.out.println(b); // 10
- 삼항연산자는 중첩이 가능
// Example1
int peach = 23;
System.out.println(peach > 30 ? "많다" : peach > 20 ? "조금 부족" : "적다"); // 조금 부족
// Example2
// 삼항 연산 만들기 : 주어진 숫자가 양수면 "양수"를, 음수면 "음수"를 출력
// (단, 0일 때는 0 출력)
int num = 1;
String result = num > 0 ? "양수" : num < 0 ? "음수" : "0";
System.out.println(result);
'Programming Language > Java' 카테고리의 다른 글
제어문과 제어키워드 - 2. 반복제어문 (0) | 2022.07.06 |
---|---|
제어문과 제어키워드 - 1. 선택제어문 (0) | 2022.07.05 |
자료형 - 2. 기본자료형 (0) | 2022.07.01 |
자료형 - 1. 자료형의 개요 (0) | 2022.07.01 |
기본 구조 및 문법 (0) | 2022.06.30 |