☕ Java Syntax 003 - 연산자
☕ Java Syntax 003 - 연산자
연산자와 피연산자
- 연산자(
Operator): 연산 기호 - 피연산자(
Operand): 연산 대상
연산자 종류
- 산술 연산자:
+,-,*,/,% - 증감 연산자:
++,— - 비교 연산자:
==,!=,>,<,>=,<= - 논리 연산자:
&&,||,! - 대입 연산자:
=,+=,-=,*=,/=,%= - 비트 연산자:
&,|,^,~,<<,>>,>>>- 비트연산자는실무에서 거의 사용할 일이 없다. 필요할 때 찾아보자.
- 삼항 연산자:
? : instanceof연산자: 객체 타입을 확인한다.- 그 외:
new,[](배열인덱스),.(객체 멤버 접근),()(메소드 호출)
0으로 나누기
- 10 / 0과 같이 숫자는 0으로 나눌 수 없다. 수학에서 허용하지 않기 때문이다.
- 또한 코드에서 어떤 숫자를 0으로 나눌 경우 프로그램에 오류가 발생한다.
1
Exception in thread "main" java.lang.ArithmeticException: / by zero
- 예외가 발생하면 해당 시점에서 프로그램이 종료된다.
문자열 더하기
- 문자열 + 문자열
- 문자열 + 숫자의 경우 숫자를 문자열로 변경한 다음에 서로 더한다.
- 변수에 담겨 있어도 문자열과 문자열 또는 문자열과 숫자를 더하면 문자열이 된다.
연산자 우선순위
1
2
3
4
5
6
7
8
9
10
11
package operator;
public class Operator4 {
public static void main(String[] args) {
int sum3 = 2 * 2 + 3 * 3; // (2 * 2) + (3 * 3)
int sum4 = (2 * 2) + (3 * 3); // sum3과 같다.
System.out.println("sum3 = " + sum3);
System.out.println("sum4 = " + sum4);
}
}
- 두 연산은 같은 연산이다.
- 하지만 보통은 이 연산을 보고 잠깐 연산자 우선순위를 생각을 해야한다.
sum4와 같이 괄호를 명시적으로 사용하는 것이 더 명확하고 이해하기 쉽다.- 즉, 코드가 더 많더라도 명확하고 단순한 것이 더 유지보수 하기 좋다.
- 연산자 우선순위는 다음과 같다.
괄호()단항연산자 (예:++,--,!,~,new,(type))산술연산자 (*,/,%,+,-)Shift 연산자 (<<,>>,>>>)비교연산자 (<,<=,>,>=,instanceof)등식연산자 (==,!=)비트연산자 (&,^,|)논리연산자 (&&,||)삼항연산자 (? :)
- 이 많은 우선순위를 어떻게 외워야 할까?
- 실무 개발자들은 연산자 우선순위를 외우지 않는다.
- 대신 딱 2가지만 기억하면 된다.
- 상식 선에서 우선순위를 사용하자.
- 애매하면 괄호를 사용하자
- 코드를 딱 보았을 때 복잡해보이면 나 뿐만 아니라 모든 사람이 그렇게 느낀다.
- 이때는 괄호를 사용해서 우선순위를 명시적으로 지정하면 된다.
요약 포인트
5 / 2의 결과는2.5가 되어야 하지만 결과는 소수점이 제거된2가 나온다.- 자바에서 같은
int형끼리 계산하면 계산 결과도int형을 사용한다. - 증감 연산자에는 전위 증감 연산자, 후위 증감 연산자가 있다.
- 증감 연산자를 단독으로 사용하는 경우에는 전위이든 후위이든 둘다 결과가 같다.
b = ++a;의 경우a += 1; b = a;를 축약할 수 있다는 장점이 있다.- 비교 연산자를 이용하면 참(
true) 또는 거짓(false)이라는 결과가 나온다. - 문자열이 같은지 비교할 때는
==이 아니라.equals()메서드를 사용해야 한다. - 논리 연산자의 경우
a > 10 && a < 20;보다10 < a && a < 20;과 같이 작성하는 것이 코드를 읽기에 더 좋다.
체크 포인트
- 산술 연산자
- 피연산자 간 타입이 맞지 않는다면 업 캐스팅 발생
- 결과 타입이 피연산자의 타입을 벗어나지 못함
- 비교 연산자: 연산 결과는
true또는false- 다음과 같은 경우 단락 평가 발생
false && truefalse && falsetrue || truetrue || false
- 단락 평가는 성능을 위해 사용하되, 추후 유지보수 차원에서 뒷 부분에는 간단한 조건을 적어두는 컨벤션이 있을 수 있음
- 다음과 같은 경우 단락 평가 발생
- 논리 부정 연산자:
! - 비트 연산자는
AND,OR보다 빠르기 때문에 게임 개발 영역에서 성능을 위해 주로 사용함
This post is licensed under CC BY 4.0 by the author.