이항 연산자란 피연산자가 둘인 연산자를 의미합니다.
위 사진을 보면 결합방향이라는 것이 있는데,
우리한테 익숙한 "=" 연산자를 보면 결합방향이 왼쪽으로 표시가 되어있습니다.
우리가 수학 배울때 =은 같다의 의미를 가져서 오른쪽이 맞는거 아닌가 할 수도 있겠지만..(사실 제가 처음에 C 를 통해 코딩을 접했을때 그렇게 생각했었습니다)
프로그래밍 언어에서 같다는 "==" 입니다.
=은 오른쪽의 값을 왼쪽에 대입 한다는 개념이라 결합방향이 왼쪽이 됩니다.
대입연산자와 산술연산자를 보겠습니다.
연산자 |
연산자의 기능 |
결합방향 |
= |
연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입한다. ex) val = 22; |
<- |
+ |
두 피연산자의 값을 더한다. ex) val = 2 + 2; |
-> |
- |
왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다. ex) val =2 - 2; |
-> |
* |
두 피연산자의 값을 곱한다. ex) val = 2 * 2; |
-> |
/ | 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다. ex) val = 7 / 3; | -> |
% |
왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지를 반환한다. ex) val = 7 % 3; |
-> |
표로 정리했습니다.
이 표대로 한번 코드를 작성해보면
public class ArithOP {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n1 = 7;
int n2 = 3;
int result=n1+n2;
System.out.println("덧셈 결과 : "+result);
result=n1-n2;
System.out.println("뺄셈 결과 : "+result);
System.out.println("곱셈 결과 : "+n1*n2);
System.out.println("나눗셈 결과 : "+n1/n2);
System.out.println("나머지 결과 : "+n1%n2);
}
}
연산자의 우선순위를 고려해서 ( ) 구분자를 사용하여 우선순위를 정해서 연산을 할 수도 있습니다.
또한 연산의 방식은 피연산자의 자료형에 따라서 결정이 됩니다.
피연산자가 모두 정수형이면 정수형 나눗셈, 실수이면 실수형 나눗셈을 하게 됩니다.
public class DivOpnd {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("정수형 나눗셈 " +7/3);
System.out.println("실수형 나눗셈 " +7.0f/3.0f);
System.out.println("형 변환 나눗셈 " + (float)7/3);
}
}
정수형 나눗셈 2
실수형 나눗셈 2.3333333
형 변환 나눗셈 2.3333333
이번에는 % 연산자에 관계된 예제를 하나 보겠습니다.
public class AMPOpnd {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("정수형 나머지 : " +7%3);
System.out.println("실수형 나머지 : " +7.2%2.0);
}
}
정수형 나머지 : 1
실수형 나머지 : 1.2000000000000002
복합 대입 연산자 라는 연산자도 있습니다.
a = a + b <-동일연산-> a += b
a = a - b <-동일연산-> a -= b
a = a * b <-동일연산-> a *= b
a = a / b <-동일연산-> a /= b
a = a % b <-동일연산-> a %= b
이렇게 간단하게 줄여서 쓸 수 있습니다.
복합 대입 연산자는 연산기호 말고도
&=, ^=, |=, <<=, >>=, >>>= 등의 연산자도 있습니다.
관계 연산자도 있습니다.
연산자 |
연산자의 기능 |
결합방향 |
< |
n1 < n2 n1이 n2보다 작은가? |
-> |
> |
n1 > n2 n1이 n2보다 큰가? |
-> |
<= |
n1<= n2 n1이 n2보다 같거나 작은가? |
-> |
>= |
n1 >= n2 n1이 n2보다 같거나 큰가? |
-> |
== |
n1 == n2 n1이 n2보다 같거나 |
-> |
!= |
n1 != n2 n1과 n2가 다른가? |
-> |
!=을 보면 !는 논리연산자 !가 관계연산자로 쓰인것입니다.
논리연산자는 true와 false 값을 반환하는 연산자인데, AND(논리곱) / OR(논리합) / NOT(논리부정)을 의미합니다.
연산자 |
연산자의 기능 |
결합방향 |
&& |
A && B A와 B 모두 true이면 연산결과는 true(논리 AND) |
-> |
|| |
A || B A와 B 둘 중 하나라도 true이면 연산결과는 true(논리 OR) |
-> |
! |
!A 연산결과는 A가 true이면 flase, A가 false이면 true(논리 NOT) |
<- |
'Programming > JAVA' 카테고리의 다른 글
4-3 비트와 관련이 있는 연산자 (0) | 2018.08.27 |
---|---|
4-2 자바에서 제공하는 단항 연산자들 (0) | 2018.08.27 |
3-2 자료형의 변환 (0) | 2018.08.26 |
3-1 상수 (0) | 2018.08.21 |
2-4 자료형의 이해 (0) | 2018.08.20 |