1. 연산자

"어떠한 기능을 수행하는 기호 (+, -, *, / 등)"


2. 피연산자

"연산자의 작업 대상 (변수, 상수, 리터럴, 수식)"


3. 연산자의 우선 순위

- 괄호의 우선순위가 제일 높다.

- 산술 > 비교 > 논리 > 대입

- 단항 > 이항 > 삼항

- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.


/*
 * 기본 적인 연산자 들의 사용 방법
 */

package com.tistory.gangzzang;

public class Operator {

	public static void main(String[] args) {
		
		// 1. 증감 연산자 [ ++, -- ] - 증감 연산자는 1증가 또는 감소 시키며, 피연산자(Operand)의 양쪽 모두 사용 가능하다.
		// ++i 와 i=i+1 과 결과값은 같지만, 수행되는 과정이 ++i 가 더 빠르다.
		int z = 5;
		int sum = 0;
		sum = z++;
		System.out.println("sum = z++, 후위 실행 후 z = " + z + ", sum = " + sum);
		
		z = 5;
		sum = 0;
		sum = ++z;
		System.out.println("sum = ++z, 전위 실행 후 z = " + z + ", sum = " + sum);
		System.out.println();
		
		
		// 2. 부호 연산자 [ + , - ] - 피연산자의 부호를 변경하는데 사용한다.
		int a = -10;
		a = +a;
		System.out.println(a);
		
		a = -10;
		a = -a;
		System.out.println(a);
		System.out.println();
		
		
		// 3. 비트전환 연산자 [ ~ ] - 피연산자를 2진수로 표현 했을 때, 0은 1로 1은 0으로 바뀐다.
		// ' ~ ' 에 의해 비트전환 되고 나면 피연산자의 부호가 반대로 변경된다.
		int b = 6, c = 5;
		System.out.println(b++);
		System.out.println(++c);
		System.out.println("b = " + b + ", c = " + c);
		System.out.println();
		
		
		// 4. 논리부정 연산자 [ ! ] - boolean 형에만 사용할 수 있으며, true는 false로 false는 true로 변경한다.
		boolean flag = false;
		System.out.println(flag);
		flag = !flag;	// flag의 값이 false에서 true로 바뀐다.
		System.out.println(flag);
		flag = !flag;	// flag의 값이 true에서 false로 바뀐다.
		System.out.println(flag);
		System.out.println();

		
		// 5. 사칙 연산자 [ + , - , * , / ] - 곱셈(*), 나눗셈(/), 나머지(%) 연산자가 덧셈(+), 뺼셈(-) 연산자보다 우선순위가 높다.
		// int형 보다 크기가 작은 자료형은 int 형으로 형
		int d = 10, e = 5, sum2 = 0;		
		sum2 = d + e;
		System.out.println(sum2);
		sum2 = d - e;
		System.out.println(sum2);
		sum2 = d * e;
		System.out.println(sum2);
		sum2 = d / e;
		System.out.println(sum2);
		System.out.println();
		
		
		// 6. 나머지 연산자 [ % ] - 왼쪽의 피연산자를 오른쪽 피연산자로 나누고 난 나머지 값을 돌려주는 연산자이다.
		int mok = 10 / 8 ;
		int nmg = 10 % 8 ;
		System.out.println("10을 8로 나눈 몫은 " + mok + " 이고, 나머지는 " + nmg + " 입니다.");
		System.out.println();
		
		
		// 7. 쉬프트 연산자 [ << , >> , >>> ] - 정수형 변수에만 사용 가능, 2의 n승 곱과 나눈 것과 곱한 결과를 얻을 수 있다.
		int temp; // 계산 결과를 담기 위한 변수
		
		System.out.println(-8);
		System.out.println(Integer.toBinaryString(-8)+"\n"); // 2진수 문자열로 변경한다.
		
		temp = -8 << 1;
		System.out.println("-8 << 1 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		
		temp = -8 << 2;
		System.out.println("-8 << 2 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		
		temp = -8 >> 1;
		System.out.println("-8 >> 1 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		
		temp = -8 >> 2;
		System.out.println("-8 >> 2 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		
		temp = -8 >>> 1;
		System.out.println("-8 >>> 1 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		
		temp = -8 >>> 2;
		System.out.println("-8 >>> 2 = " + temp);
		System.out.println(Integer.toBinaryString(temp)+"\n");
		System.out.println();
		
		
		// 8. 대소비교 연산자 [ < , > , <= , >= ] - 두 연산자의 크기를 비교하는 연산자이다.
		int big = 10, small = 5;
		System.out.println("big이 small 보다 더 큰가? " + (big > small));
		System.out.println("big이 small 보다 더 작은가? " + (big > small));
		System.out.println();
	
		
		// 9. 등가비교 연산자 [ == , != ] - 두 피연산자에 저장되어 있는 값이 같은지 다른지 비교하는 연산자이다.
		int f = 10, g = 5;
		System.out.println("f와 g가 같은가? " + (f == g));
		System.out.println("f와 g가 같지않은가? " + (f != g));
		System.out.println();
		
		
		// 10. 논리 연산자 [ && , || ] - 피연산자로 boolean형 또는 값을 결과로 하는 조건식만을 허용한다.
		int num1 = 10, num2 = 5;
		System.out.println("num1 또는 num2 중에 10이 있습니까? " + (num1 == 10 || num2 == 10));
		System.out.println("num1 과 num2 가 둘 다 10입니까? " + (num1 == 10 && num2 == 10));
		System.out.println();
		
		
		// 11. 비트연산자 [ & , | , ^ ] - 이진 비트연산을 수행한다.
		int j = 3, k = 5;
		System.out.println("j는 " + j + "이고, k는 " + k + "일 때, ");
		System.out.println("j | y = " + (j | k));
		System.out.println("j & y = " + (j & k));
		System.out.println("j ^ y = " + (j ^ k));
		System.out.println();
		
		System.out.println("0 | 0 = " + (0 | 0));
		System.out.println("0 | 1 = " + (0 | 1));
		System.out.println("1 | 0 = " + (1 | 0));
		System.out.println("1 | 1 = " + (1 | 1));
		System.out.println();
		
		System.out.println("0 & 0 = " + (0 & 0));
		System.out.println("0 & 1 = " + (0 & 1));
		System.out.println("1 & 0 = " + (1 & 0));
		System.out.println("1 & 1 = " + (1 & 1));
		System.out.println();
		
		System.out.println("0 ^ 0 = " + (0 ^ 0));
		System.out.println("0 ^ 1 = " + (0 ^ 1));
		System.out.println("1 ^ 0 = " + (1 ^ 0));
		System.out.println("1 ^ 1 = " + (1 ^ 1));
		System.out.println();
		
		
		// 12. 삼항연산자 [ ? : ] - 조건식과 조건식이 참일 때와 거짓일 때 반환되는 값, 연산결과가 true 또는 false인 식이 사용되어야 한다.
		int l = 10, m = -10;
		
		int absL = (l >= 0) ? l : -l;
		int absM = (m >= 0) ? m : -m;
		
		System.out.println("l = 10 일 때, l 의 절대 값은 " + absL);
		System.out.println("m = -10 일 때, m 의 절대 값은 " + absM);
		System.out.println();
		
		
		
		// 13. 대입연산자 [ = , op= ] - 변수에 값 또는 수식의 연산결과를 저장하는데 사용한다.
		int i = 0;
		
		i += 3;		i = i + 3;
		i -= 3;		i = i - 3;
		i *= 3;		i = i * 3;
		i /= 3;		i = i / 3;
		i %= 3;		i = i % 3;
		i <<= 3;	i = i << 3;
		i >>= 3;	i = i >> 3;
		i >>>= 3;	i = i >>>3;
		i &= 3;		i = i & 3;
		i ^= 3;	 	i = i ^ 3;
		i |= 3;		i = i | 3;
		
	} // main
	
} // Operator


+ Recent posts