1. 비교 연산자
대소비교 연산자 (< , > , <= , >=)
기본형에서는 boolean형을 제외한 나머지 자료형에 사용 가능하며, 참조형에는 사용할 수 없다.
등가비교 연산자 (== , !=)
기본형과 참조형에 모두 사용 가능하다.
이때, 참조형에 사용하면 객체의 주소값을 비교하므로 사용 시 주의해야 한다.
※ 문자열 비교
두개의 문자열을 비교할 때에는 등가비교 연산자가 아닌 equals() 메서드를 사용해야 한다.
Ex. String str = 'dakveloper'
boolean result = str.equals("dakveloper")
결과 : true
+) 자바는 대소문자를 구분하므로 문자열 비교 시 대소문자에 유의해야 한다.
대소문자를 구분하지 않고 비교하려면 equalsIgnoreCase()를 사용하면 된다.
2. 논리 연산자
논리 연산자는 두개 이상의 조건을 하나의 식으로 표현하도록 한다.
|| (OR 결합 연산자) : 두개의 조건 중 하나만 true이면 결과는 true
&& (AND 결합 연산자) : 두개의 조건이 모두 true일 때만 결과가 true
Ex1) K는 2의 배수이면서 3의 배수이다.
→ K%2 == 0 && K%3 == 0
Ex2) K는 2의 배수 또는 3의 배수이지만 6의 배수는 아니다.
→ (K%2 == 0 || K%3 == 0) && K%6 != 0
(&&연산자는 ||연산자보다 우선순위가 높기 때문에 먼저 계산하고 싶은 조건에 괄호를 반드시 붙여야 한다!!)
Ex3) 문자 K는 소문자 또는 대문자이다.
→ ('a' <= K && k <= 'z') || ('A' <= K && K <= 'Z')
☆ 피연산자의 위치에 따라 계산속도가 달라질 수 있다.
||연산자의 경우 두개의 조건식 중 한가지만 성립하면 전체 결과가 true가 되므로
앞에 있는 조건식이 true인 경우 뒤의 조건식은 평가하지 않는다.
&&연산자의 경우에도 앞에 있는 조건식이 false이면 뒤의 조건식은 평가하지 않고 넘어간다.
3. 비트 연산자
| (OR 연산자) : 피연산자 중 한쪽이 1이면 결과가 1이다. 그 외의 경우는 0이다.
& (AND 연산자) : 피연산자의 값이 모두 1일 때 결과가 1이다. 그 외의 경우는 0이다.
^ (XOR 연산자) : 피연산자의 값이 서로 다르면 결과가 1이다. 같을 때는 0이다.
~ (비트 전환 연산자) : 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꿔준다.
<< , >> (쉬프트 연산자) : 왼쪽에 있는 피연산자의 2진수를 오른쪽 피연산자만큼 왼쪽/오른쪽으로 이동시킨다.
Ex. 8 << 2 1) 8은 2진수로 00001000
2) 2진수를 왼쪽으로 2자리 이동시키면 00001000_ _
저장범위를 벗어난 자릿수는 버려지고, 빈자리(_)는 0으로 채운다.
3) 결과는 00100000 (10진수 32)가 된다.
(우측 쉬프트 연산자의 경우에는 부호비트의 유지를 위해 왼쪽 피연산자가 음수인 경우 빈자리는 1로 채운다.)
2진수는 각 자리수가 2의 제곱수이므로 쉬프트 연산자를 수행하면 2ⁿ 만큼 곱한거나 나눈 값과 같아진다.
# 쉬프트 연산
x<<n 의 결과 : x * 2ⁿ
x>>n 의 결과 : x / 2ⁿ
4. 조건, 대입 연산자
① 조건 연산자 (조건식? 식1 : 식2)
유일한 삼항 연산자로 3개의 피연산자를 가진다.
조건식의 결과가 true이면 식1의 값이, false이면 식2의 값이 연산결과로 저장된다.
조건 연산자는 중첩이 가능하므로 간략하게 식을 쓸 수 있다.
간단한 조건식의 경우에는 if문보다 조건 연산자를 사용하는 것이 가독성이 좋다.
그러나, 여러 번의 중첩이 이루어지면 식이 복잡해 질 수 있으므로 필요 시에 1번만 중첩하여 사용하도록 한다.
Ex. int X = 3
int Y = 1
int result = X<=0 ? X : Y
결과 : result의 값은 1이 된다.
② 대입 연산자 (=, op=)
대입 연산자는 변수에 값 또는 수식의 연산결과를 저장하는데 사용한다.
(오른쪽 피연산자의 값을 왼쪽의 피연산자에 저장)
연산자들 중 우선순위가 가장 낮으므로 모든 계산이 끝나고 마지막에 수행된다.
또한, 연산의 진행 방향이 오른쪽에서 왼쪽이라는 특징이 있다.
Ex. K = 3
왼쪽의 피연산자인 K를 lvalue(left value), 오른쪽의 피연산인 3을 rvalue(right value)라고 한다.
여기서 rvalue는 변수, 식, 상수 등 모두 가능하지만, lvalue는 변수와 같이 값을 변경할 수 있는 것이어야 한다.
즉, lvalue에는 리터럴이나 상수와 같이 값이 고정된 것은 사용할 수 없다.
op=는 복합 대입 연산자로 다른 연산자와 결합한 형태를 말한다.
예를 들어, i = i + 1은 i += 1과 같이 표현할 수 있으며 여기서 사용한 +=는 복합 대입 연산자이다.
복합 대입 연산자의 종류로는 +=, -=, *=, /=, %= 등이 있다.주의할 점은 i *= 5 + k와 같은 형태는 i = i * 5 + k가 아닌, i = i * (5 + k)이라는 것이다.우변의 피연산자가 둘 이상의 항이어도 계산할 때는 하나의 묶음으로 계산해야 한다.
'▶ JAVA > 개념정리' 카테고리의 다른 글
[Java] 7. 반복문 (0) | 2022.02.03 |
---|---|
[Java] 6. 조건문 (0) | 2022.02.02 |
[Java] 4. 연산자(1) (0) | 2022.01.27 |
[Java] 3. 오버플로우, 형변환(기본) (0) | 2022.01.26 |
[Java] 2. 진법과 2의 보수법 (0) | 2022.01.24 |