티스토리 뷰
단항 연산자 (증감 연산자) (++, --)
+ | 양수 표현, 실제로 사용할 필요 없다 |
- | 음수 표현 |
++ | 증가 연산자, 1씩 증가 |
-- | 감소 연산자, 1씩 감소 |
int i = 3;
i++;
System.out.println(i); // 4
++i;
System.out.println(i); // 5
System.out.println(++i); // 6 증가하고 출력
System.out.println(i++); // 6 출력부터 하고 증가(7이지만 6 나온 이유)
System.out.println(i); // 7 (값은 누적)
1. 선행연산자 (전위연산자)
- 피연산자의 앞쪽(좌측)에 붙여서 값을 1증가 또는 감소 먼저 피연산자의 값을 증감시킨 후 다른 연산에 참여
ex) ++i, --i
2. 후행연산자 (후위연산자)
- 피연산자의 뒷쪽(우측)에 붙여서 값을 1증가 또는 감소시키는데 피연산자를 먼저 다른 연산에 참여시킨 후 피연산자 값을 1증감
ex) i++, i--
int x1 = 5;
int y1 = ++x1; // 선행연산자
// x1 값을 먼저 1증가 시킨 후, 대입연산자를 통해 xy값을 y1에 대입
System.out.println(y1); // 6
int x2 = 5;
int y2 = x2++; // 후행연산자
// x2 값을 먼저 y2에 대입한 후, x2의 값을 1증가 시킴
System.out.println(y2); // 5
System.out.println("x1: " + x1 + ", y1: " + y1); // x1: 6, y1: 6
System.out.println("x2: " + x2 + ", y2: " + y2); // x2: 6, y2: 5
int x = 10, y = 5;
x++; // x = 10, y = 5
int z = x + y; // x = 10, y = 5, z = 15
y--; // x = 11, y = 4, z = 16
System.out.println("x: " + x + ", y: " + y + ", z: " + z); // x: 11, y: 4, z: 16
산술 연산자
+ | - | * | / | % | - |
나머지 | 이항연산자 |
문자열 + 문자열에서 '+'는 연결 연산자 역할
System.out.println(10 + 3); // 13
System.out.println(10 - 3); // 7
System.out.println(10 * 3); // 30
System.out.println(10 / 3); // 3 (몫)
System.out.println(10 % 3); // 1 (나머지)
byte b1 = 10, b2 = 20, b3;
System.out.println(b1 + b2);
//b3 = b1 + b2; // 오류! byte + byte = int 이므로 byte 타입인 b3에 저장 불가!
b3 = (byte)(b1 + b2); // 연산 결과에 형변환 연산자를 적용해서 byte 타입으로 변환
System.out.println(b3);
int result = 1+2;
result = result - 1;
System.out.println(result); // 2
result = result + 2;
System.out.println(result); // 4
대입 연산자(=)
- 우변의 데이터를 좌변의 변수에 대입(저장, 할당)
- 연산이 우측에서 좌측으로 진행
x = y = 3; // y에 3을 대입하고 x에 y를 대입
확장 대입 연산자 (복합 대입 연산자)
- 대입 연산자와 산술 연산자를 조합한 연산자
- 좌변과 우변의 데이터끼리 산술연산을 먼저 수행한 후 대입
+= -= *= /= %=
// a = a + 1;
// a += 1;
int a = 10, b = 0;
b += a; // 10
b += a; // 20
b -= a; // 10
b *= a; // 100
b /= a; // 10
b %= a; // 0 b값을 "누적"
비교 연산자 (관계연산자)
== : 좌우가 같은지 비교, 값이 같다면 true, 다르면 false
!= : ≠로 좌우가 다른지 비교, 값이 다르면 true, 같다면 false
> 크다, >= 크거나 같다, < 작다, <= 작거나 같다
- 두 피연산자 간의 대소관계 등을 비교해 true 또는 false 값을 반환
int a = 10, b = 5;
System.out.println(a > b); // true
System.out.println(a < b); // false
System.out.println(a <= b); // false
System.out.println(a >= b); // true
System.out.println(a == b); // false
System.out.println(a != b); // true
// char 은 비교연산 사용하면 유니코드 정수 값을 비교
System.out.println('A' > 'B'); // false
System.out.println('A' == 65); // true
System.out.println("A > "B"); // 문자열 비교못함
System.out.println(2 == 2.0); // true
System.out.println(0.1 == 0.1f); // false 근사치 표현으로 다른값으로 취급
System.out.println((float)0.1 == 0.1f); // true
논리 연산자
- 두 피연산자 간의 논리적인 판별을 수행- 피연산자 모두 boolean 만 사용 가능, 결과값도 boolean으로 리턴
AND 연산자(&, &&) - 논리곱 : 좌우 조건 모두 만족할 때 true
OR 연산자(|, ||) - 논리합 : 좌우 조건 중 하나만 만족하면 true, 모두 false 일 때만 false
NOT 연산자 (!) - 논리부정 : 단항 연산자로 현재 값을 반전 (!true == false, !false == true)
XOR 연산자(^) - 배타적 논리합 : 좌우 결과가 다른 경우 true, 같으면 false
boolean a = false;
boolean b = true;
a && b; // false
b && b; // true
!a && b;// true
a || b; // true
a || a; // false
!a; // true
a ^ a; // false
b ^ a; // true
int i = 10;
i++ > 9 || i++ < 10; // true
System.out.println(i); // 11
삼항 연산자 (조건연산자)
- 연산에 참여하는 항이 3개인 연산자
- 특정 조건에 따라 다른 값을 실행하는 연산자 (= if ~ else)
- 2가지 경우의 수(T or F)에 대한 결과 수행
연산식(조건식) ? true 값1 : false 값2;
- 연산식에는 결과값이 boolean 타입(T or F)인 식만 올 수 있음
int a = 10;
String x = a % 2 == 0 ? "짝" : "홀";
System.out.println(x); // 짝
a = 30;
int b = 20;
// a와 b를 비교해 최댓값 출력
int max = a > b ? a : b;
System.out.println(a); // 30
// 최솟값 출력
int min = a < b ? a : b;
System.out.println(b); // 20
// 반올림
double d = 3.4;
int result = d - (int)d <= 0.5 ? (int)d : (int)d + 1;
System.out.println(result);
나정말 이해가.. 느리구나 눈물난다...
다시 정리할 쯤엔 그래도 할만해졌다. 익숙하진 않지만.
'배운 것 기록 > java' 카테고리의 다른 글
[eclipse] 중첩 if , switch문 (0) | 2022.04.28 |
---|---|
[eclipse] 조건문 (0) | 2022.04.27 |
[eclipse] 형변환 (0) | 2022.04.26 |
422 String, printf(), println() (0) | 2022.04.24 |
422 변수 (0) | 2022.04.24 |