연산자

Brogod97·2022년 12월 7일
0

KH TIL

목록 보기
8/37
post-thumbnail

💡 클래스를 기능별로 구별하기

예제 코드 작성용 클래스

package edu.kh.op.ex;
  
public class OpExample {
	// 기능 메소드(method) : 객체 지향 프로그래밍에서 객체와 관련된 세부 루틴 or 함수
  	// void : return 값이 없는 메소드에 작성	
	public void ex1() {
		System.out.println("OpExample 클래스에 ex1() 기능 수행");
	}

	// 하나의 메소드안에는 하나의 기능만 정의해야 함
	public void ex2() {
		// 수행문
	}

}

코드 실행용 클래스

package edu.kh.op.ex;

public class ExampleRun {
	// 메인 메소드 필수 작성
	public static void main(String[] args) {
		OpExample ex = new OpExample();
		// OpExample라는 설계도를 보고
		// OpExample 형태의 ex를 만들어 냄
		
		ex.ex1(); // OpExample 클래스에 ex1() 기능 수행
	}

}

연산자 종류와 우선 순위


산술 연산자

일반 수학과 동일한 연산 방법, 우선순위. 단, %는 나누기의 나머지 값을 구하는 연산

  1. *  /  % 연산자 예시
int a = 10, b = 20, c = 0;
c = a * b;
c = a / b;
c = a % b;
  • / 연산 시 형 변환에 유의해야 함
  1. +  - 연산자 예시
int a = 10, b = 20, c = 0;
c = a + b;
c = a - b;

증감 연산자 : ++, --

피연산자의 값에 1을 더하거나 빼는 연산자로 위치에 따라 결과 값이 다르게 나타남

  1. 전위 연산 : 먼저 연산 후 다른 연산 실행
    int a = 10;
    int b = ++a;
    System.out.println(a + ", " + b);
  1. 후위 연산 : 다른 연산 우선 실행 후 연산
    int a = 10;
    int b = a++;
    System.out.println(a + ", " + b);

<후위 연산 예시>

public void ex2() {
		int iNum1 = 10;
		int iNum2 = 10;
		
		iNum1++;
		iNum2--;
		
		System.out.println("iNum1:" + iNum1);
		System.out.println("iNum2:" + iNum2);
	}
package edu.kh.op.ex;

public class ExampleRun {
	public static void main(String[] args) {
		OpExample ex = new OpExample();
		
		ex.ex1(); // iNum1:11
		ex.ex2(); // iNum2:9
	}

}

<전위, 후위 연산 실습>

public void ex3() {
	// 전위 연산 : ++3, --2 연산자가 앞쪽에 배치
	// -> 다른 연산보다 먼저 증가/감소
	int temp1 = 5;
	System.out.println(++temp1 + 5);
	//						6  + 5 (== 11)

	int temp2 = 3;
	System.out.println( temp2-- + 2); // 5
	//			 			  3 + 2
    //            			  temp2 == 2 (1 감소)

비교 연산자

데이터가 같은지, 다른지 비교할 때 쓰이며 항상 결과값은 논리 값(true, false)으로 나타남.

  • a == b : a와 b가 같으면 true
  • a != b : a와 b가 다르면 true
int a = 10;
int b = 10;

System.out.println(a == b);  // true
double a = 1.23;
double b = 3.14;

System.out.println(a != b);  // true

public void ex4() {
	// 비교연산자: > , < , >= , <= , == , !=
	// 비교 연산자의 결과는 항상 논리값(true/false)
	// 등호 (=)가 포함된 연산자에서 등호 위치는 항상 오른쪽!
		
	int a = 10;
	int b = 20;
		
	System.out.println( a > b ); //false
	System.out.println( a < b ); //true
	System.out.println( a != b); //true
	System.out.println( (a == b) == false ); //true
				// () 괄호 안에 있는거 먼저 연산
				// false == false -> true
	int c = 4;
	int d = 5;
	System.out.println( c + 1 <= d); // true
				// 산술 연산이 비교연산보다 우선순위가 높음

	int temp = 723;
	System.out.println("temp는 짝수?" + (temp % 2 == 0));
}

논리 연산자

논리 값 두 개를 비교하는 연산자

  • && : 두 피연산자가 모두 true일 때 true 반환 (AND)
  • || : 두 피연산자 중 하나만 true여도 true 반환 (OR)

public void ex5() {
	// 논리연산자 : &&(AND), || (OR)
	// && : 둘 다 true이면 true
	
	int a = 101;
	// a는 100 이상이면서 짝수인가 ?
	// ( a >= 100 ) && ( a % 2 == 0 )
	System.out.println( a >= 100 ); // true
	System.out.println( a % 2 == 0 ); // false
	System.out.println((a >= 100) && (a % 2 == 0)); // false
		
	// || : 둘 다 false면 false (AND의 반대) 나머지 true
	int c = 10;
	// c는 10을 초과했거나 짝수인가?
	// ( c > 10 ) || ( c % 2 == 0 )
	System.out.println( c > 10 ); // false
	System.out.println( c % 2 == 0 ); // true
	System.out.println((c > 10) || (c % 2 == 0)); // true
}

홀수인 지 파악할 때, a % 2 == 1 또는 a % 2 != 0 이런 식으로 가능


논리 부정 연산자

논리 부정 연산자 : !

논리 값을 부정하여 반대 값으로 변경

제어문을 활용할 때 많이 쓰임

public void ex6() {
	// 논리 부정 연산자 : !
	// 논리값을 반대로 바꾸는 연산자
		
	boolean bool1 = true;
	System.out.println(!bool1); // false
}

복합 대입 연산자

다른 연산자와 대입 연산자가 결합한 것으로

자기 자신과 연산 후 연산 결과를 자기 자신에게 누적 대입

  • a += 10 (a = a + 10 )
  • a -= 10 (a = a - 10 )
  • a *= 10 (a = a * 10 )
  • a /= 10 (a = a / 10 )
  • a %= 10 (a = a % 10 )

증감 연산과 비슷해 보이지만 증감연산자(++, --)는 1씩 증가 대입 연산자는 원하는 값을 증가시키고 그 변수에 저장 가능


public void ex7() {
	// 복합 대입 연산자 : += , -= , *= , /= , %=
	// 피연산자가 자신과 연산 후 결과를 다시 자신에게 대입
		
	int a = 10;

	a++; // 11
	System.out.println("a++: " + a);
		
	a += 4; // 15 == (a = a + 4;)
	System.out.println("a += 4: " + a);
		
	a -= 10; // 5
	System.out.println("a -= 10: " + a);
		
	a *= 3; // 15
	System.out.println("a *= 3: " + a);
		
	a /= 6; // 2 (몫이 2)
	System.out.println("a /= 3: " + a);
}

삼항 연산자

조건식 ?1 :2;

조건식의 결과 값에 따라 연산을 처리하는 방식으로 결과 값이 참일 경우 식1, 거짓일 경우 식2 수행

삼항 연산자 안에 삼항 연산자를 중첩하여 쓰는 것도 가능

public void ex8() {
	// 삼항 연산자
	// 조건식 ? 식1 : 식2
	// 조건식 결과가 true면 식1, false면 식2
	int num = 30;
	String str1 = "num은 30보다 크다";
	String str2 = "num은 30 이하다";
		
	String result = num > 30 ? str1 : str2; // false
	System.out.println(result); // str2 수행
}

0개의 댓글