a | + | b | = | c |
---|---|---|---|---|
항(피연산자) | 연산자 | 항 | 연산자 |
피연산자(항) 1개
package section03;
public class Ex0301 {
public static void main(String[] args) {
int num = 100;
int resultPlus = +num;
int resultMinus = -num;
// 부호 연산
System.out.println("resultPlus \\t: " + resultPlus);
System.out.println("resultMinus \\t: " + resultMinus);
System.out.println("-resultPlus \\t: " + -resultPlus);
System.out.println("-resultMinus \\t: " + -resultMinus);
}
}
증감 연산자: ++, -- (증가, 감소)
연산자(후위) | 내용 | 연산자(전위) | 내용 |
---|---|---|---|
a++ | a를 1증가하고 증가 전의 값 반환 | ++a | a를 1증가하고 증가된 값 반환 |
a-- | a를 1감소하고 감소 전의 값 반환 | --a | a를 1감소하고 감소된 값 반환 |
package section03;
public class Ex0302 {
public static void main(String[] args) {
int num = 1;
// 증감 연산자(정수)
System.out.println("num \\t: " + num);
System.out.println("++num \\t: " + ++num);
System.out.println("num \\t: " + num);
System.out.println("num++ \\t: " + num++);
System.out.println("num \\t: " + num);
}
}
package section03;
public class Ex0303 {
public static void main(String[] args) {
char a = 'a';
// 증감 연산자(문자)
System.out.println("a \\t\\t: " + a);
System.out.println("(int) a \\t: " + (int) a);
System.out.println("a++ \\t\\t: " + a++);
System.out.println("a \\t\\t: " + a);
System.out.println("(int) a \\t: " + (int) a);
}
}
논리 연산자:
논리 부정 연산자(뒤집기): !
연산자 | 내용 | 예제 | 결과 |
---|---|---|---|
!a | a가 true 이면 false, false이면 true | !(3<5) | false |
package section03;
public class Ex0304 {
public static void main(String[] args) {
// 논리 연산자(부정, 뒤집기)
int age = 20;
boolean isAdult = age >= 19;
System.out.println("isAdult \\t: " + isAdult);
System.out.println("!isAdult \\t: " + !isAdult);
}
}
피연산자(항) 2개
산술 연산자: +, -, *, /, %
연산자 | 의미 | 예 | 결과 |
---|---|---|---|
+ | 더하기 | 25.1 + 3.8 | 28.9 |
- | 빼기 | 3 - 5 | -2 |
***** | 곱하기 | 3.5 * 4.0 | 14.0 |
/ | 나누기 | 5/2 | 2 |
% | 나머지 | 5%2 | 1 |
package section03;
public class Ex0305 {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
// 산술 연산자
System.out.println("num1 + num2 : " + (num1 + num2));
System.out.println("num1 - num2 : " + (num1 - num2));
System.out.println("num1 * num2 : " + (num1 * num2));
System.out.println("num1 / num2 : " + (num1 / num2));
System.out.println("num1 / num2 : " + ((double) num1 / num2));
System.out.println("num1 % num2 : " + (num1 % num2));
// 주의
System.out.println("num1 + num2 : " + num1 + num2);
}
}
비교(관계) 연산자: <, <=, >=, ==, !=
연산자 | 내용 | 예제 | 결과 |
---|---|---|---|
a < b | a가 b보다 작으면 true | 3<5 | ture |
a > b | a가 b보다 크면 true | 3>5 | false |
a <= b | a가 b보다 작거나 같으면 true | 1<=0 | false |
a >= b | a가 b보다 크거나 같으면true | 10>=10 | ture |
a == b | a가 b보다 같으면 true | 1==3 | false |
a != b | a가 b보다 같지 않으면 true | 1!=3 | ture |
package section03;
public class Ex0306 {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
// 비교(관계) 연산자
System.out.println("num1 < num2 \\t: " + (num1 < num2));
System.out.println("num1 > num2 \\t: " + (num1 > num2));
System.out.println("num1 <= num2 \\t: " + (num1 <= num2));
System.out.println("num1 >= num2 \\t: " + (num1 >= num2));
System.out.println("num1 == num2 \\t: " + (num1 == num2));
System.out.println("num1 != num2 \\t: " + (num1 != num2));
System.out.println("num1 == --num2 \\t: " + (num1 != --num2));
}
}
논리 연산자: &&, ||
연산자 | 내용 | 예제 | 결과 |
---|---|---|---|
**a | b** | a와 b의 OR 연산a와 b 모두 false인 경우에만 false | |
a && b | a와 b의 AND 연산a와 b 모두 true인 경우에만 true | (3<5)&&(1==1) | true |
a ^ b | a와 b의 XOR 연산a와 b 가 서로 다를 때 true | (3>5)^(1==1) | true |
package section03;
public class Ex0307 {
public static void main(String[] args) {
// 논리 연산자
// 논리곱(AND)
System.out.println("true && true \\t: " + (true && true));
System.out.println("true && false \\t: " + (true && false));
System.out.println("false && false \\t: " + (false && false));
System.out.println();
// 논리합(OR)
System.out.println("true || true \\t: " + (true || true));
System.out.println("true || false \\t: " + (true || false));
System.out.println("false || false \\t: " + (false || false));
System.out.println();
// 배타적논리합(XOR)
System.out.println("true ^ true \\t: " + (true ^ true));
System.out.println("true ^ false \\t: " + (true ^ false));
System.out.println("false ^ false \\t: " + (false ^ false));
}
}
비트 논리 연산자: &, |, ^, ~
연산자 | 별칭 | 내용 | 예제 | |
---|---|---|---|---|
a & b | AND | 두 비트 모두 1이면 1, 그렇지 않으면 0 | & | 01101010 |
11001101 | ||||
결과 | 01001000 | |||
**a | b** | OR | 두 비트 모두 0이면 0, 그렇지 않으면 1 | |
11001101 | ||||
결과 | 11101111 | |||
a ^ b | XOR | 두 비트가 다르면 1, 같으면 0 | ^ | 01101010 |
11001101 | ||||
결과 | 10100111 | |||
~ a | NOT | 1을 0으로, 0을 1로 변환 | ~ | 01101010 |
결과 | 10010101 |
비트 시프트 연산(>>, >>>, <<)
시프트 연산자 | 내용 |
---|---|
a >> b | 정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채움) |
a >>> b | 정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 0으로 채움) |
a << b | 정수 a의 각 비트를 b만큼 왼쪽으로 이동(빈자리는 0으로 채움) |
대입 연산자
| 대입 연산자 (산술) | 내용 | 대입 연산자 (비트) | 내용 | | --- | --- | --- | --- | | a = b | b의 값을 a에 대입 | a &= b | a = a & b와 동일 | | a += b | a = a + b와 동일 | a ^= b | a = a ^ b와 동일 | | a -= b | a = a - b와 동일 | a |= b | a = a | b와 동일 | | a *= b | a = a * b와 동일 | a <<= b | a = a << b와 동일 | | a /= b | a = a / b와 동일 | a >>= b | a = a >> b와 동일 | | a %= b | a = a % b와 동일 | a >>>= b | a = a >>> b와 동일 |
package section03;
public class Ex0308 {
public static void main(String[] args) {
int num = 2;
System.out.println("num \\t\\t\\t: " + (num));
System.out.println("num = num + num \\t: " + (num = num + num));
num = 2;
System.out.println("num += num \\t\\t: " + (num += num)); // 복합 대입 연산자(+=)
System.out.println();
num = 2;
System.out.println("num = num * num \\t: " + (num = num * num));
num = 2;
System.out.println("num *= num \\t\\t: " + (num *= num)); // 복합 대입 연산자(*=)
}
}
피연산자(항) 3개
<aside> 👉 조건식 ? 피연산자1 : 피연산자2;
</aside>
package section03;
public class Ex0309 {
public static void main(String[] args) {
boolean result = (2 > 1) ? true : false;
System.out.println(result);
}
}
https://blog.naver.com/passionisall/222139065323
package section03;
import java.math.BigDecimal;
public class FloatingPoint {
public static void main(String[] args) {
// 부동 소수점 오차
double dNum1 = 0.1;
dNum1 += 0.1;
dNum1 += 0.1;
System.out.println(dNum1); // 0.30000000000000004
// 해결 방법
BigDecimal bdNum1 = new BigDecimal("0.1");
BigDecimal bdNum2 = new BigDecimal("0.1");
BigDecimal bdNum3 = new BigDecimal("0.1");
System.out.println(bdNum1.add(bdNum2).add(bdNum3)); // 0.3
// 주의
bdNum1 = new BigDecimal(0.1);
bdNum2 = new BigDecimal(0.1);
bdNum3 Num3 = new BigDecimal(0.1);
System.out.println(bdNum1.add(bdNum2).add(bdNum3)); // 0.3000000000000000166533453693773481063544750213623046875
}
}
public class Practice0301 {
public static void main(String[] args) {
int num1 = 15;
int num2 = 4;
// 합
int sum = num1 + num2;
// 차
int difference = num1 - num2;
// 곱
int product = num1 * num2;
// 나눗셈
int quotient = num1 / num2;
// 나머지
int remainder = num1 % num2;
System.out.println("합: " + sum);
System.out.println("차: " + difference);
System.out.println("곱: " + product);
System.out.println("나눗셈: " + quotient);
System.out.println("나머지: " + remainder);
}
}