[Java]연산자

박진우·2022년 9월 3일
0

[Java]자바의 기초

목록 보기
1/16

연산이란?

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

연산자(Operator)

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

피연산자(Operand)

연산대상이 되는 데이터(리터럴,변수)

연산식(Expressions)

연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

연산자의 종류

연산의 방향과 우선순위

Assignment Operator = 을 기준으로 해서
1.오른쪽에 있는 수식을 계산할때 왼쪽부터 오른쪽으로 계산
2.왼쪽부터 오르쪽으로 계산할 때 연산순위가 높은 연산자가 먼저 연산 수행
(* , / , %가 + , - 보다 연산순위가 높아 먼저 수행)
3.단 ()가 모든 연산자보다 우선순위가 가장높다.

산술연산자(arithmetic operator)

public class ArithmeticOperatorEx {

		public static void main(String[] args) {
			int a1 = 10;
			int a2 = 3;
			int result;
			double dresult;
			
			result = a1 + a2;
			System.out.println("result = " + result);
			
			result = a1 - a2;
			System.out.println("result = " + result);

			result = a1 * a2;
			System.out.println("result = " + result);
			
			result = a1 / a2;	// '/' = 몫을 가져옴
			System.out.println("result = " + result);
			
			result = a1 % a2;	// '%' = 나머지를 가져옴
			System.out.println("result = " + result);
			
//			a2를 double 로 자동 형변환
			dresult = a1 / (double)a2;
			System.out.println("dresult = " +dresult);
		}
}

할당연산자(Assignment Operator)

  1. =
  2. += , -= , *= , /= , %=,... => C언어 부터 사용된 표현방식
public class AssignmentOperatorEx {

		public static void main(String[] args) {
			int n1 = 10;
			
			System.out.println("n1 = " + n1);
			
//			n1 = n1 + 10;
			n1 += 10;
			System.out.println("n1 = " + n1);
			
//			n1 = n1 - 10;
			n1 -= 10;
			System.out.println("n1 = " + n1);
			
//			n1 = n1 * 2;
			n1 *= 10;
			System.out.println("n1 = " + n1);
			
//			n1 = n1 / 3;
			n1 /= 10;
			System.out.println("n1 = " + n1);
			
			
		}
}

논리연산자(Logical Operator)

Logical Operator (논리연산자)
1. && == AND (논리곱)
2. || == OR (논리합)
3. ! == NOT (부정)

public class LogicalOperatorEx {

	public static void main(String[] args) {
		int a1 = 10;
		int a2 = 20;
		int a3 = 20;
		int a4 = 0;
		boolean result;
		
        //a1이 a2보다 작고 a2와 a3가 같아야한다
		result = (a1 < a2) && (a2 == a3);
		System.out.println("result = " + result);
        //a1이 a2보다 작거나 a2와 a3가 같아야한다
		result = (a1 < a2) || (a2 == a3);
		System.out.println("result = " + result);
		
        //a1이 a2보다 크고 a2와 a3가 같아야한다
		result = (a1 > a2) && (a2 == a3);
		System.out.println("result = " + result);
        //a1이 a2보다 크거나 a2와 a3가 같아야한다
		result = (a1 > a2) || (a2 == a3);
		System.out.println("result = " + result);
		
        //부정
		result = !(a1 > a2);
		System.out.println("result = " + result);
		
	}
}

비교연산자(Relational Operatot)

해당 하는 연산에 참이면 true 거짓이면 false
1. ==
2. !=
3. > , >=
4. < , <=

public class RelationalOperatorEx {

		public static void main(String[] args) {
			int a1 = 5;
			int a2 = 10;
			int a3 = 5;
			boolean bResult;
			
			System.out.println("a1 == a2 = " + (a1 == a2));
			System.out.println("a1 == a2 = " + (a1 == a3));
			
			bResult = (a1 == a2);
			System.out.println("bResult = " + bResult);

			bResult = (a1 == a3);
			System.out.println("bResult = " + bResult);
			
			System.out.println("a1 != a2 = " + (a1 != a2));
			System.out.println("a1 != a3 = " + (a1 != a3));
			
			System.out.println("a1 > a2 = " + (a1 > a2));
			System.out.println("a1 < a3 = " + (a1 < a3));
			
			System.out.println("a1 >= a2 = " + (a1 >= a2));
			System.out.println("a1 <= a3 = " + (a1 <= a3));
			
			
			
		}
}

3항연산자(Ternary Operator)

A ? B : C (연산자는 ?,: 2개이고 피연산자는 A,B,C 3개가 있다.
=> A가 참이면 B 거짓이면 C를 실행

public class TernaryOperatorEx {

	public static void main(String[] args) {
		int n1 = 5;
		int n2 =10;
		int max;
		
//		if(n1 > n2) {
//			max = n1;
//			System.out.println(max);
//		}else {
//			max = n2;
//			System.out.println(max);
//		}

		//위와 같은if문을 다음과 같이 간단하게 표현할수 있다.
		max = (n1>n2) ? n1:n2;
		System.out.println("max = " + max);
		
		int result;
        //삼항연산자를 다음과 같이 중첩하여 사용 가능하다.
		result = (n1>n2) ? (n1 + n2) : (n1 - n2);
		System.out.println("result = " + result);
	}
}

단항연산자(Unary Operator)

  • +,- = :피연산자 앞에 붙여 사용
    operand(피연산자)가 2개인 경우 ex) 산술연산자
    ! 논리 부정 연산자 = Boolean type에만 사용가능
    피연산자가 true면 false를 피연산자가 false면 true를 출력
    비트 반전 연산자 : ~
    byte, short, int, long 타입맊 피연산자가 될 수 있다.
    비트값을 반젂(0 1, 1 0)시킨다.
public class UnaryOperatorEx {

	public static void main(String[] args) {
		int n1 = 20;
		int result;
		boolean b = false;
		result = +n1;
		System.out.println("result = " + result);

		result = -n1;
		System.out.println("result = " + result);
       
       boolean b = true;
		System.out.println(!b);//false를 출력
       
       int num = 10;
       int result = ~num;
       System.out.println(num);	//00001010 =>10
       System.out.println(result); //11110101  
       							//=> 2의 보수를 취해 -11이 된다
       
	}
}

증감연산자

++,--
변수의 값을 1증가시키거나(++) 1감소(--) 시키는 연산자
증감연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리

 public class UnaryOperatorEx {

	public static void main(String[] args) {
		int n1 = 10;
		
		
		n1++:
		System.out.println("n1 = " + n1);

		n1--;
		System.out.println("n1 = " + n1);
	}
}

강의를 듣고 느낀점

이번 강의에서는 듣고 그리 어려웠던 점은 없었다.
다만 비트 반전 연산자를 들을때 2의 보수를 다시 10진수로 바꾸는 과정을 조금 어려워 했었다.
분명 전공강의에서 들은 기억은 있는데 어려워해서 혼자 당황했던 기억이 있다.
이날 강의 이후 한번 들은 강의는 다시 한번 정리하자고 생각하는 작은 계기가 되었다

profile
개발자를 꿈꾸는 사람입니다

0개의 댓글