3. 연산자 Operator


  • operand : 연산에 사용되는 값

  • 연산자 operator : 항 operand 을 이용해서 계산하거나 비교하는데 사용하는 기호

3.1 산술연산자 Arithmetic Operator


  • 사칙연산자와 나머지를 구하는 연산자

  • 산술연산자는 두 개의 항을 가지는 이항연산자

  • 연산방향은 왼쪽에서 오른쪽이다.

  • byte short char int 자료형 사이의 연산은 결과가 정수 기본형인 int 로 처리된다.

  • long float double 은 큰 자료형 long < float < double 으로 결과가 처리된다.

산술연산자기능예시
+왼쪽 항에 오른쪽 항을 더한다.result = 1 + 2 , result = i + j
-왼쪽 항에서 오른쪽 항을 뺀다.result = 1 - 2 , result = i - j
*왼쪽 항에 오른쪽 항을 곱한다.result = 1 * 2 , result = i * j
/왼쪽 항을 오른쪽 항으로 나눈다.result = 1 / 2 , result = i / j
%왼쪽 항을 오른쪽 항으로 나누고 나머지를 구한다.result = 1 % 2 ,  result = i % j

3.2 증감연산자 Increment & Decrement


  • 변수의 값을 1 증가시키거나 1 감소시키는 연산자

  • 단항연산자

  • 변수를 기준으로 연산자의 위치가 앞에 있는지 뒤에 있는지에 따라 연산 시점과 결과가 다르다.

  • ++변수변수 = 변수 + 1 과 같은 연산이다.

증감연산자기능예시
++변수선증가 연산자val = ++num; // 먼저 num 값이 1 증가한 후 val 변수에 대입
변수++후증가 연산자val = num++; // val 변수에 기존 num 값을 대입한 후 num 값이 1 증가
--변수선감소 연산자val = --num; // 먼저 num 값이 1 감소한 후 val 변수에 대입
변수--후감소 연산자val = num--; // val 변수에 기존 num 값을 대입한 후 num 값이 1 감소

3.3 비교연산자, 관계연산자 Comparison


  • 값을 비교하여 결과를 true , false 로 반환하는 연산자

  • 이항연산자

  • 조건문, 반복문의 조건식으로 많이 사용된다.

  • 기본 자료형이 아닌 참조 자료형 reference data type 인 경우 == , != 연산자만 가능하다.

연산자기능예시
==왼쪽 항이 오른쪽 항과 같으면 true , 아니면 false 를 반환한다.num == 1
!=왼쪽 항이 오른쪽 항과 같으면 false , 아니면 true 를 반환한다.num != 1
<왼쪽 항이 오른쪽 항보다 작으면 true , 아니면 false 를 반환한다.num < 1
<=왼쪽 항이 오른쪽 항보다 작거나 같으면 true , 아니면 false 를 반환한다.num <= 1
>왼쪽 항이 오른쪽 항보다 크면 true , 아니면 false 를 반환한다.num > 1
>=왼쪽 항이 오른쪽 항보다 크거나 같으면 true , 아니면 false 를 반환한다.num >= 1

public class ComparisonTest {

	public static void main(String[] args) {

		int num1 = 8;
		int num2 = 4;
		
		boolean value = (num1 > num2); // 8 은 4 보다 크다. true 를 반환한다.
		System.out.println(value);
		
		System.out.println(num1 < num2);
        System.out.println(num1 >= num2);
		System.out.println(num1 <= num2);
		System.out.println(num1 == num2);
		System.out.println(num1 != num2);
	}
}

3.3 논리연산자 Logical Operator


  • 논리연산자는 양쪽 항들의 boolean 값을 비교하는 연산자

  • 비교연사자와 혼합하여 많이 사용된다.

  • 연산의 결과는 true , false 로 반환된다.

논리연산자기능예시
&& (논리 곱)양쪽 항이 모두 true 인 경우에만 결과 값이 true , 아니면 false 로 반환된다(7>3) && (7>2)
|| (논리 합)양쪽 항 중에서 하나의 항이라도 true 면 결과 값은 true , 양쪽 항 모두 falsefalse 로 반환된다.(7>3) || (7>2)
! (부정)true 인 경우 false 로 바꾸고 false 인 경우 true 로 바꾼다. 단항연산자.val = !(7>3)

public class LogicalTest {

	public static void main(String[] args) {
		
        boolean val;
		int i = 3;
		int j = 7;
		
		val = (i > 0) && (j > 0);
		System.out.println(flag);
		
		val = (i < 0) && (j > 0);
		System.out.println(val);
		
		val = (i > 0) || (j > 0);
		System.out.println(val);
		
		val = (i < 0) || (j > 0);
		System.out.println(val);
		
		val = !(i > 0);
		System.out.println(val);
	}
}
  • 단락 회로 평가 short circuit evaluation
    논리 연산에서 모든 항의 연산을 실행하지 않아도 논리 연산의 결과를 알 수 있는 경우이다.

    • 항1 && 항2

      • 왼쪽 항이 false 면 오른쪽 항은 검사하지 않는다.

      • 왼쪽 항이 false 면 오른쪽 항 true , false 상관없이 논리연산의 결과는 false

      • 논리 곱은 양쪽 항 모두 true 일 경우에만 결과가 true 로 반환되기 때문에 하나라도 falsefalse 결과 값을 가진다.

    • 항1 || 항2

      • 왼쪽 항이 true 면 오른쪽 항은 검사하지 않는다.

      • 왼쪽 항이 true 면 오른쪽 항 true , false 상관없이 논리연사의 결과는 true

      • 논리 합은 양쪽 항 모두 false 일 경우에만 결과가 false 로 반환되기 때문에 하나라도 truetrue 결과 값을 가진다.

      xyx && yx || y
      truetruetruetrue&& 논리곱은 이 경우에만 true
      truefalsefalsetrue
      falsetruefalsetrue
      falsefalsefalsefalse|| 논리합은 이 경우에만 false

3.4 삼항연산자, 조건연산자 Ternary Operator


  • 3개의 항으로 이루어진 연산자

  • 조건식의 결과가 true , false 인 경우에 따라 다른 결과가 수행된다.

  • 조건항 ? 항1 : 항2

    조건항의 결과가 true 이면 항1이 되고 false 이면 항2가 된다.

int val1 = 10 > 20 ? 100 : 200;	// val1의 값은 10 이고 20 보다 크지 않으므로 false
								// false 이므로 val1의 값은 200 이 된다.
int val2 = 10 < 20 ? 100 : 200;	// val2의 값은 10 이고 20보다 작아서 true
								// true 이므로 val2의 값은 100 이 된다.
                                
int val3 = 10;
int val4 = val3 > 20 ? 1000 : 2000;	// 조건식 val3 > 20 은 false
									// val4 = 2000

3.5 대입연산자 Assignment Operator


  • 대입연산자 = 는 오른쪽 항의 값이나 연산결과를 왼쪽 항의 변수에 대입하는 연산자

  • 이항연산자 중에서 우선 순위가 가장 낮다.

  • 왼쪽 변수 = 오른쪽 변수 (또는 식, 값 )

  • 대입연산자는 축약이 가능하다.

연산자기능예시
+=양쪽 항의 값을 더해서 왼쪽 항에 대입한다.i=i+1 , i+=1
-+왼쪽 항에서 오른쪽 항을 빼고 그 값을 왼쪽 항에 대입한다.i=i-1 , i-=1
*=양쪽 항을 곱하고 그 값을 왼쪽 항에 대입한다.i=i*2 , i*=2
/=왼쪽 항을 오른쪽 항으로 나누고 그 몫을 왼쪽 항에 대입한다.i=i/2 , i/=2
%=왼쪽 항을 오른쪽 항으로 나누고 그 나머지를 왼쪽 항에 대입한다.i=i%2 , i%=2
profile
real.great.code

0개의 댓글