[Java] 연산자(Operator)

chael_lo·2021년 5월 5일
0

Java

목록 보기
6/52

프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산이라고 하며, 연산에 사용되는 표시나 기호를 연산자라고 한다.

산출 방법에 따른 연산자 비교

산술(+ - * / %)

모든 숫자 타입에 대한 사칙연산 및 나머지 계산

//덧셈 +
System.out.println(9 + 3);//출력: 12
//뺄셈 -
System.out.println(9 - 3);//출력: 6
//곱셈 *
System.out.println(9 * 3);//출력: 27
//나눗셈 /
System.out.println(9 / 3);  //출력: 3
//나머지 % 
System.out.println(9 % 3); //출력: 0

부호(+ -)

음수와 양수의 부호
boolean 과 char 타입을 제외한 모든 타입에서 사용가능하다.
부호 연산자의 산출 타입은 int 타입이 된다.

short sh = 400;
//sh = -sh;//부호연산자 사용시 컴파일 에러 형변환 필수
int change = -sh;

문자열(+)

두 문자열을 연결

String kakao = "kakao";
String talk = "talk";
		
System.out.println(kakao + talk);//출력: kakaotalk

대입(= += -= *= /= %= ^= &= I= >>= <<= >>>=)

우변의 값을 좌변의 변수에 대입
우선순위가 가장 낮은 연산자로 다른 연산자의 연산이 모두 끝난 뒤에 대입될 때 사용되며 다른 연산자와 같이 복합하여 사용 될 때도 있다.
변수의 표현식의 데이터 타입과 같거나 호환될 수 있어야 한다.

증감(++ --)

1만큼 증가/감소

연산자가 변수 앞에 있는 경우 -> 자신의 값을 증가시키거나 감소시킨후 식을 계산한다.

int front = 22;
System.out.println(++front);//출력: 23

변수 뒤에 있을 경우 -> 대입이 먼저되고 값이 증가시키거나 감소시킨다.

int back = 33;
System.out.println(back++);//출력: 33
System.out.println(back);//출력: 34

증감 연산자의 독립으로 사용할 때 -> 연산 차이가 없다

int i = 1;
++i; //독립 사용
System.out.println(i); //출력: 2

i = 1;
i++; //독립 사용
System.out.println(i); //출력: 2

비교(== != > >= < <=)

값의 비교
피연산자 사이의 상대적인 크기를 판단하여, true와 false를 반환한다.
boolean을 제외한 기본형에 사용할 수 있지만, 참조형에는 사용할 수 없다.

//문자열 비교시 유니코드로 비교
//'A' -> 65
System.out.println('A' > 'B');//출력: false
System.out.println('A' > 50);//출력: true

논리(! & | ^ && ||)

논리 부정, 논리곱, 논리합
피연산자 사이의 상대적인 크기를 판단하여, true와 false를 반환한다.
||보다 &&가 우선순위가 높기 때문에 함께 사용할 때 괄호를 사용하여 우선순위를 명확하게 해줘야 한다.
!: 부정의 의미로 not이라고 읽는다. true에 붙으면 false가 되고 false에 붙으면 true가 된다.

System.out.println(!true);//false
System.out.println(!false);//true

|| : 좌형 또는 우형이 true일 때(or)
&& : 좌형과 우형 모두 true일 때(and)

if (true && true) {
 System.out.println(true && true);//출력: true
}

if (true && false) {
 //false -> 출력 못함
}

if (true || true) {
     System.out.println(true || true);//출력: true
 }
 
if (true || false) {
  System.out.println(true || false);//출력: true
}

조건(조건식)? A : B

조건식에 따라 true일 경우 A, false일 경우 B 하나를 선택한다.
if~else문을 통해서도 처리가 가능하지만, 가벼운 로직을 처리할 때 사용하기 좋다.
소스가 if~else문에 비해 짧지만 처리 속도가 빨라지는 것은 아니다.

//1이 3보다 크면 10, 크지 않으면 30을 A에 저장한다.
int A = (1 > 3) ? 10 : 30;
System.out.println(A);//출력: 30

피연산자 수에 따른 연산자 비교

피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분한다.
(피연산자 : 연산되는 데이터)

단항연산자

부호, 증감, 논리 부정, 비트 반전

이항연산자

산술, 문자열, 비교, 논리, 대입, 비트

삼항연산자

조건(조건식)? A : B

연산자의 우선순위

기본적으로 연산자에는 우선순위가 있다.
연산자 우선순위가 같으면 연산 방향에 따라 달라진다.
결과적으로 괄호를 사용하여 우선순위를 명확하게 해주는 것이 좋다.

( ), [ ] 괄호, 대괄호가 우선순위가 가장 높다.
삼항 < 이항 < 단항
대입 < 논리 < 비교 < 산술

연산자의 연산방향

대부분의 연산자는 왼쪽에서 오른쪽으로 연산을 하고,
단항 연산자, 부호연산자, 대입연산자는 오른쪽에서 왼쪽으로 연산한다.

//5가 c에 들어가고, c가 b에 b가 a에 들어간다.
a = b = c = 5//오른쪽에서 왼쪽으로 연산
profile
천천히 꾸준히

0개의 댓글