Chaoter 03. 연산자

수강 날짜: 2021-07-30(3일차)

강의명 : 01. 대입, 부호, 산술, 복합대입, 증감연산자
강의명 : 02. 관계, 논리, 조건, 비트 연산자-1
강의명 : 03. 관계, 논리, 조건, 비티 연산자-2

대입, 부호, 산술, 복합대입, 증감연산자

항과 연산자

항(operand):연산에 사용되는 값
연산자(operator): 항을 이용하여 연산하는 기호

항에 개수와 연산자

  • 단항 연산자 (증감,대입)
  • 이항 연산자 (산술)
  • 삼항 연산자 (조건)

대입연산자

int age = 20;
왼쪽 변수의 값이 오른쪽에 대입
->우선 순위가 가장 낮은 연ㅅ나자

부호 연산자

단항 연산자
변수의 부호를 유지 하거나(+) 바꿈(-)
실제 변수의 값이 변하려면 대입연산자를 사용해야 함


코드

public class OperatorEx1 {
	
	public static void main(String[] args) {
		
		int num1 = -10;
		
		int num2 = 20;
		
		System.out.println(+num1);
		System.out.println(+num2);

		System.out.println(-num1);
		System.out.println(-num2);
		
		System.out.println(num1);
		System.out.println(num2);
		
		num1 = -num1;
		
		System.out.println(num1);
	}
}

다음과 같이 변수의 부호를 직접 바꾸기 위해서는 대입 연산자를 사용해줘야 한다. -, +의 경우 불러온 값을 변환시켜줄 뿐 값을 직접적으로 바꾸는게 아니다

산술 연산자

사칙연산 연산자

'+', '-', '*', '/', '%' 연산자

public class OperatorEx1 {
	
	public static void main(String[] args) {

		int num = 5%3;	//5를 3으로 나눈 나머지는 2이다.
		System.out.println(num);
		
	}
}


복합 대입 연산자

대입 연산자와 다른 연산자가 함께 쓰임

  • += : 두 항의 값을 더해서 왼쪽 항에 대입합니다.
  • -= : 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입합니다.
  • *= : 두 항의 값을 곱해서 왼쪽 항에 대입합니다.
  • /= : 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입합니다.
  • %= : 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입합니다.
public class OperatorEx2 {
	
	public static void main(String[] args) {
		
		int num1 = 10;
		num1 += 2;
		
		System.out.println(num1);
	}
}

증가, 감소 연산자

단항 연산자
변수의 값을 1 더하거나 뺄 때 사용
연산자가 항의 앞에 있는가 뒤에 있는가에 따라 그 결과가 달라짐

  • ++ 항의 값에 1을 더합니다.
  • -- 항의 값에서 1을 뺍니다.

변수의 앞에 있는지 뒤에 있는지가 중요하다.
전위 연산자 / 후위 연산자

public class OperatorEx3 {

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

결과가 언제 저장하는지가 중요하다



관계, 논리, 조건, 비트 연산자-1

관계 연산자

연산의 결과가 true/false로 반환 됨
비교 연산자 라고도 함

'>','<', '>=', '<=', '==', '!='

논리 연산자

관계 연산자와 함께 많이 사용됨
연산의 결과가 true/false로 반환 됨

'&&'(논리 곱), '||'(논리 합), '!'(부정)

단락 회로 평가
논리 곱은 두 항이 모두 true일 때만 결과 true
: 앞의 항이 fals이면 뒤 항의 결과를 평가하지 않아도 false임
논리 합은 두 항이 모두 false일 때만 결과가 false
: 앞의 항의 true이면 뒤 항의 결과를 평가하지 않아도 true임

실제 프로그램에서 예상하지 않는 결과가 발생할 수 있으므로 유의

public class OperatorEx3 {

	public static void main(String[] args) {
		int num1 = 10;
		int i = 2;
		
		boolean value = ( (num1 = num1 + 10) < 10 ) && ( (i = i+2) < 10);
		System.out.println(num1);
		System.out.println(i);
		
		System.out.println(value);
		
		value = ( (num1 = num1 + 10) < 10 ) || ( (i = i+2) < 10);
		System.out.println(num1);
		System.out.println(i);
		
		System.out.println(value);
	}
}

단락 회로 평가때문에 뒤의 연산이 되는지 안되는지가 발생할 수 있다.
앞의 조건이 false이기 때문에 논리 값에서는 뒤의 결과를 보지 않는다.

조건 연산자

삼항 연산자
조건식? 결과1 : 결과2

간단한 조건문 대신 사용할 수 있는 연산자

public class OperatorEx3 {

	public static void main(String[] args) {
		int num2 = 10;
		int num3 = 20;
		
		int max = (num2> num3) ? num2 : num3;
		System.out.println(max);
	}
}

더 큰 수를 대입하는 삼항 연산자



관계, 논리, 조건, 비트 연산자-2

비트 연산자

자주 사용되지는 않는다.
속도가 빠르다.

대입연산자와 다른 연산자가 함께 쓰임

마스크:특정 비트를 가리고 몇 개의 비트 값만 사용할 때

비트켜기: 특정 비트들만을 1로 설정해서 사용하고 싶을 때

비트끄기: 특정 비트들만을 0으로 설정해서 사용하고 싶을 때

비트 토글: 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때

연산자 우선순위

좋은 웹페이지 즐겨찾기