개발 공부/JAVA 자바

[JAVA 공부] 연산자

밍혁팟 2020. 10. 7. 10:50

연산

  • 데이터를 처리하여 결과를 산출하는 것

x = y + z라는 식을 봤을 때

 

y와 z를 더한 값을 x에 대입한다는 것을 의미한다.

'+'는 연산자를 뜻한다.

x, y, z는 피연산자라고 한다

x = y+ z 는 연산식이다

 

연산자 (Operations)

  • 연산에 사용되는 표시나 기호

  • ex) +, -, *, /, %, = ...

피연산자 (Operand)

  • 연산 대상이 되는 데이터

  • 리터럴, 변수등이 있다.

연산자의 종류

부호 연산자 Ex) +, -

산술연산자 Ex) +, -, *, /, %

증감 연산자 Ex) ++, --

 

피연산자가 1개인 연산자는 단항 연산자

부호 연산자와, 증감연산자는 단항 연산자이다.


package JAVAStudy;

public class Operator {

	public static void main(String[] args) {
		int i1 = -5;
		int i2 = +i1;
		int i3 = -i1;
		
		System.out.println(i1);
		System.out.println(i2);
		System.out.println(i3);
	}
}

int i1 = -5에서

-는 부호 연산자, 5는 피연산자이다.

변수앞에 부호연산자를 선언할 수도 있다.

이것을 보았을때 부호연산자 '+'는 부호를 그대로 유지시켜주고 '-'는 부호를 바꿔주는 역할을 한다.

package JAVAStudy;

public class Operator {

	public static void main(String[] args) {	
		int i4 = ++i3;
		int i5 = i3++;
		int i6 = --i3;
		int i7 = i3--;
		
		System.out.println(i4);
		System.out.println(i5);
		System.out.println(i6);
		System.out.println(i7);
	}
}

증감연산자는 피연산자의 앞에 붙일 수도 있고, 뒤에 붙일수도 있다.

 

만약 증감연산자가 앞에 있을경우 먼저 계산을 하고 다음코드로 넘어가지만

뒤에 있을경우 다음코드로 넘어간후 계산이 된다.

package JAVAStudy;

public class Operator {

	public static void main(String[] args){
        int i = 5;
	    int j = 2;
        
	    System.out.println(i +  j);//덧셈
	    System.out.println(i -  j);//뺄셈
	    System.out.println(i *  j);//곱셈
	    System.out.println(i /  j);//나눗셈
        System.out.println(i /  (double)j);//실수값이 나오는 나눗셈
	    System.out.println(i %  j);//나머지
	}
}

 

산술연산자 사용예시

 

정수끼리의 계산은 정수로만 나온다.

값을 실수로 나오게 할려면 두 변수중 하나는 실수형 변수가 되어야 한다.


비교연산자

  • ==(같다) , !=(다르다) , <(작다) , >(크다) , <= (작거나 같다), >=(크거나 같다)
  • 비교 연산자의 결과는 boolean이다. 
package JAVAStudy;

public class Operator {

	public static void main(String[] args) {
		int i = 10;
		int j = 10;
		
		System.out.println(i == j);
		System.out.println(i != j);
		System.out.println(i < j);
		System.out.println(i <= j);
		System.out.println(i > j);
		System.out.println(i >= j);
	}
}

같다라는 걸 표시할땐 ==라고 해야함. (=는 대입연산자)


대입연산자

  • =, -=, +=, *=, /=, %=
package JAVAStudy;

public class Operator {

	public static void main(String[] args) {	
		int i = 10;
		
		i += 10;
		System.out.println(i);
		
		System.out.println(i -= 5);
		System.out.println(i);
	}
}

i = 10에서 =는 대입연산자.

 

+=, -=는 복합 대입연산자라고 한다.


연산자 우선순위

  • 최우선연산자 ( ., [], () )

  • 단항연산자 ( ++,--,!,~,+/-   : 부정, bit변환>부호>증감)

  • 산술연산자 ( *,/,%,+,-,shift) < 시프트연산자 ( >>,<<,>>> ) >

  • 비교연산자 ( >,<,>=,<=,==,!= )

  • 비트연산자 ( &,|,,~ )

  • 논리연산자 (&& , || , !)

  • 삼항연산자 (조건식) ? :

  • 대입연산자 =,*=,/=,%=,+=,-=

  • 논리연산자 중 and 연산과 or 연산이 나왔을 경우 and 연산이 먼저 수행된다.

package JAVAStudy;

public class Operator {

	public static void main(String[] args) {
		int a = 5;
	    int b = 10;
	    int c = 5;
	    System.out.println(a - b * c );
        System.out.println(a < 5 && b > 5);
	}
}

곱셈이 우선순위가 높기 때문에 b와c를 먼저 곱한다. 그런 다음 a에서 b와 c를 곱한 값을 뺀다.

비교연산자가 논리 연산자 보다 우선순위가 높다.

단 증감 연산자일 경우에 전위 연산자인지 후위 연산자 인지에 따라서 우선 순위가 바뀔 수 있다.

 

비교연산자가 우선순위가 더 높기 때문에 비교를 먼저하고 논리연산자가 실행이 된다.

package JAVAStudy;

public class Operator {

	public static void main(String[] args) {
		int a = 5;
	    System.out.println(++a - 5);
	}
}

단항 연산자이면서, 전위 연산자인 ++ 가 먼저 연산된다. a가 6으로 바뀐 후 5 를 빼게 되므로 결과는 1이 나온다.

package JAVAStudy;

public class Operator {

	public static void main(String[] args) {
		int a = 5;
		System.out.println(a++ - 5); 
        System.out.println(a); 
	}
}

단항 연산자이면서, 후위 연산자인 ++ 가 나중에 연산된다.

a가 5인 상태에서 5를 뺀 후에 a++(a=a+1) 이 실행되므로 출력결과는 0이 나온다.

'개발 공부 > JAVA 자바' 카테고리의 다른 글

[JAVA 공부] 반복문  (0) 2020.10.13
[JAVA 공부] 조건문  (0) 2020.10.07
[JAVA 공부] 기본형 타입(형) 변환  (0) 2020.09.30
[JAVA 공부] 기본형 타입  (0) 2020.09.28
[JAVA 공부] 상수  (0) 2020.09.27