java의 연산자는 계산을 위해 사용되는 기호를 의미한다.
- 항 : 연산에 사용되는 값
- 연산자 : 항을 이용하여 연산하는 기호
- 단항연산자 : 항이 1개인 연산자 / 예 : ++num , num++ / 우선순위가 높다
- 이항연산자 : 항이 2개인 연산자 / 예 : a1 + b2 ; / 사칙연산
- 삼항연산자 : 항이 3개인 연산자 / 예 : ( 9 > 3 ) ? 1 : 0 / 조건연산자를 의미한다
[ 연산자의 우선순위 ]
연산(계산)시 우선순위가 놓은 연산자부터 계산을 시작한다.
1. 일차식 연산자
2. 단항연산자 ( 증가, 감소 연산자 )
3. 산술 연산자
4. 시프트 연산자 ( shift ) ( 비트이동 )
5. 관계연산자
6. 비트연산자.
7. 논리 연산자
8. 조건 연산자
9. 대입 연산자
10. 콤마 연산자
연산자의 종류
[ 1. 일차식 연산 ]
(), []
- () : 우선순위 변경을 위해 사용한다
- [] : 배열의 크기나 첨자를 나타낼 때 사용한다.
[ 2. 단항연산자 ] ( 부호연산자, 증가감소 연산자)
2-1) 부호연산자
+num / -num
ㄴ int num이 10이면 각각 10 / -10 으로 출력됨.
ㄴ 어떤 변수에 + 또는 - 부호가 붙는 형태이다.
ㄴ변수의 부호를 유지하거나 바꿀 때 사용한다.
ㄴ변수에 대입된 리터럴의 값을 변경하지 않고 부호만 변경하여 표현한다
ㄴ 실제 변수의 부호를 바꾸려면 대입연산자를 함께 사용해야 한다.
( int num = 10 ; 일 때 , int chnnum = -num; 을 쓰면 -10으로 출력되지만 num 은 10이 유지된다. )
2-2) 증가 감소 연산자
num++ / num— / +num / -num
ㄴ 단항연산자이다.
ㄴ 변수의 값을 1 더하거나 뺄때 사용한다.
ㄴ 문장의 끝(;)을 기준으로 연산시점을 고려하여 사용해야한다.
ㄴ num = ++a; ( num = 1+a 와 같음 ) , 앞에 ++이 있으면 증가 후 변수에 대입한다
ㄴ num = —a; ( num = a-1 와 같음 ) 앞에 —가 있으면 감소 후 변수에 대입한다
ㄴ num = a++; ( num = a ; a= a+1; 와 같음 ) 뒤에 ++가 있으면 a값을 대입한 후 a의 값을 증가시킨다. 대입한 이후에 a의 값을 사용할 경우 대입전의 숫자와 대입 후의 숫자가 다르게 나온다.
++a : a의 값을 1 증가한 후 변수에 대입
a++ : a의 값을 먼저 추가한 후 1을 증가시킨다.
--a : a의 값에 1을 빼고 변수에 대입
a-- : a의 값을 변수에 먼저 넣고 1을 뺀다.
[ 3. 산술 연산자 ]
+, - , ! , ~ , % , / , *, + , -
% : 나누기, 나머지를 반환한다. ( n개의 숫자가 있을 떄 0~(n-1)개 사이의 숫자를 가져오거나 배정할 때 유용하게 사용할 수 있음. )
/ : 나누기, 몫만 반환한다.
* : 곱하기 + 더하기 - 빼기
[ 4. 시프트 연산자 ( shift ) ]
>>,<<, >>>
<< : 곱하기와 같이 동작 , 곱하기 연산이 빨라진다.
00000001010 에 << 2 을 적용하면, 00000101000 이 된 값이 출력된다.
>> : 나누기와 같이 동작 , 나누기 연산이 빨라진다.
00000001010 에 >> 1 을 적용하면, 00000000101 이 된 값이 출력된다.
밀린 값을 변경한 채로 저장하려면 <<= , >>= 같이 대입해야한다.

[ 5. 관계연산자 ]
<, <=, >, >=, == , !=
ㄴ 두 항의 관계를 표현한다 , 비교연산자
ㄴ 연산의 결과가 true, false 로 나타난다.
ㄴ 조건문에서 주로 사용된다.
A < B , A <= B , A > B , A >= B : 두 연산자의 크기를 비교한다.
A == B , A != B : 두 연산자가 동일한지 비교한다

[ 6. 비트연산자 ]
&, ^, |, &&, ||
ㄴ 단항연산자와 이항연산자 모두 사용한다.
ㄴ 프로그램시 많이 사용되지는 않는다.
ㄴ 빠른 오퍼레이팅 시 사용된다.
ㄴ 마스킹 : 특정 비트를 꺼내어 사용하는 것을 의미
ㄴ 00001111 8비트짜리의 숫자 로 두개의 비트가 1인경우 1 을 반환하고 그렇지않은 경우 0을 반환한다. ( 00000101 & 00001111 = 00001010 )
ㄴ 비트를 반전할 때 사용한다.
ㄴ 비트 연산자는 . 특정 비트의 값이 필요할 때, 특정 비트를 1 혹은 0으로 설정하고 싶을 때 사용한다.
~A : 이진수로 표현된 피연산자의 값을 반전시켜 표현한다. ( 1의 보수, not) 25를 넣으면 -26을 반환한다.
A & B : 1 & 1 인 경우에만 1을 반환하고, 아닌 경우에는 0을 반환한다.
A | B : 0 | 0 인 경우에만 0을 반환하고, 아닌 경우에는 1을 반환한다.
A ^ B : XOR 연산, 배타적 논리합으로, 두개의 값이 서로 다를 때 1을 반환한다

[ 7. 논리 연산자 ]
&&(논리곱), ||(논리합), ! (부정)
ㄴ 두개의 단항으로 and / or을 표현한다
A && B : 논리곱은 두항이 모두 true일 때에만 true를 반환한다.
: 논리곱은 A가 false인 경우 B를 타지 않고 false를 반환한다.
A || B : 논리합은 두 항이 모두 false인 경우에만 false를 반환한다
논리합은 A가 ture인 경우 B를 실행하지 않고 true를 반환한다.
!A : A와 반대되는 값을 반환한다. A가 true면 false를 반환한다.

+ 심화 : 단락회로평가
[JAVA] 논리연산자 - 단락회로평가 (short circuit evaluation)
논리연산에서 논리곱과 논리합의 결과값 반환은 아래와 같다. 논리 곱(&&)인 경우 두 항의 결과가 모두 true인 경우에만 true를 반환한다. 논리 합(||)인 경우 두 항의 결과 중 1개라도 true이면 true를
helena90-study.tistory.com
[ 8. 조건 연산자 / 삼항연산자 ]
?, : => A ? B : C
ㄴ조건식의 결과가 true인 경우와 false인 경우에 따라 다른 결과가 수행된다.
조건식? true 결과 : false 결과 ;
ㄴ A 조건식이 true이면 B를 반환하고, false면 C를 반환한다
ㄴ int num = ( 5> 3 ) ? 10 : 20 ; 인 경우 num은 10으로 대입된다.
ㄴ 간단한 조건식(if)을 사용할 때 사용된다.
[ 9. 대입 연산자 ] (assignment operator)
ㄴ 변수에 다른 변수나 값을 대입하는 연산자
ㄴ 이항 연산자 중 우선순위가 가장 낮다.
ㄴ int num = 10; 을 10을 num 에 대입한다 라고 한다 ( 오른쪽에서 왼쪽으로 대입 )
=,+=, -=, *=,%=, /=, >>=, <<=
= : 대입 연산자, A = B일 때 B를 A에 저장한다는 것을 의미한다.
+=, -=, *=,%=, /=, >>=, <<= : 복합대입연산자 / 대입 연산자와 다른 연산자를 함께 사용한다. 비트연산자와 함께 사용할 수 있다.

[ 10. 콤마 연산자 ]
,
'공부함 > JAVA' 카테고리의 다른 글
| [JAVA] scanner : 사용자에게 값 입력받기 (0) | 2024.02.27 |
|---|---|
| [JAVA] 조건문 ( if / if-else / 삼항연산자 / switch-case / switch Expression) (0) | 2023.06.26 |
| [JAVA] 논리연산자 - 단락회로평가 (short circuit evaluation) (0) | 2023.05.31 |
| [JAVA] 자료형( 기본,참조, ), 리터럴, 형변환 (0) | 2023.05.24 |
| [JAVA] 변수의 정의와 이름 규칙 (0) | 2023.05.17 |