본문 바로가기
Programming/JAVA

4-1 자바에서 제공하는 이항 연산자들

by CGS 2018. 8. 26.



이항 연산자란 피연산자가 둘인 연산자를 의미합니다.


위 사진을 보면 결합방향이라는 것이 있는데,


우리한테 익숙한 "=" 연산자를 보면 결합방향이 왼쪽으로 표시가 되어있습니다.


우리가 수학 배울때 =은 같다의 의미를 가져서 오른쪽이 맞는거 아닌가 할 수도 있겠지만..(사실 제가 처음에 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);

}


}



덧셈 결과 : 10
뺄셈 결과 : 4
곱셈 결과 : 21
나눗셈 결과 : 2
나머지 결과 : 1


연산자의 우선순위를 고려해서 ( ) 구분자를 사용하여 우선순위를 정해서 연산을 할 수도 있습니다.


또한 연산의 방식은 피연산자의 자료형에 따라서 결정이 됩니다.


피연산자가 모두 정수형이면 정수형 나눗셈, 실수이면 실수형 나눗셈을 하게 됩니다.



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



정수형 나머지는 1이 당연히 잘 나오지만 실수형 나머지는 수학적으로 문제가 있는 연산 결과가 나옵니다. 프로그래밍 언어중에는 이러한 %연산을 허용하지 않는 언어도 있습니다. 



복합 대입 연산자 라는 연산자도 있습니다.


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-3 실수 표현방식의 이해  (0) 2018.08.17