국비교육(22-23)

13일차(3)/java(4) : Operator

서리/Seori 2022. 10. 24. 18:25

13일차(2)/java(4) : Operator

 

*자바의정석 3판: 연산자 86-120p 참고

 

 

- 산술 > 비교 > 논리 > 대입 순으로 수행된다. 대입 연산자는 가장 마지막!

- 단항 > 이항 > 삼항 순으로 수행된다.

 

Mainclass01 : 산술연산자

package test.main;
/*
 * 1.산술연산자 테스트
 * +, -, *, /, %
 */
public class MainClass01 {
	public static void main(String[] args) {
		int num1=5;
		int num2=2;
		// + 연산하기
		int sum=10+1;
		int sum2=num1+num2;
		int sum3=10+num2;
		//정수끼리 연산하면 결과는 정수만 나온다.
		int result1=5/3;
		int result2=num1/num2;
		//연산의 결과로 실수를 얻어내고 싶다면 적어도 하나는 실수여야 한다.
		double result3=5/3.0;
		double result4=num1/(double)num2;
		//앞에 있는 수를 뒤에 있는 수로 나눈 나머지 값을 얻어낸다.
		int result5=num1%num2;
	}
}

- 정수끼리 연산하면 결과값은 정수만!

 연산하는 값 중 어느 하나는 실수여야 실수 값이 나온다.

 


 

MainClass02 : 증감연산자

package test.main;
/*
 * 2. 증감 연산자 테스트
 *    변수에 있는 숫자 값을 1씩 증가 혹은 1씩 감소시킬 때 사용한다.
 * ++, --
 */
public class MainClass02 {
	public static void main(String[] args) {
		int num=0;
		num++;
		num++;
		num++; //num이 최종적으로 3이 된다.
		
		int num2=0;
		num2--;
		num2--;
		num2--; //num2가 최종적으로 -3이 된다.
		
		int num3=0;
		int result1 = num3++; //result1에 0이 대입되고 num3가 증가한다.
		
		int num4=0;
		int result2 = ++num4; //num4가 1 증가하고 result2에 1이 대입된다.
	}
}

int result1 = num3++;

- ++가 뒤에 있으면 연산자의 우선순위가 뒤처지기 때문에, 대입이 된 다음에 증가하는 것.

int result2 = ++num4;
- 앞에다가 쓰면 값이 먼저 증가되고 나서 대입되는 것.

 

- ++, --(증감연산자) 는 +, -(부호연산자, -1과 같은) 는 단항 연산자이다.

 


 

MainClass03 : 비교연산자

package test.main;
/*
 * 3.비교연산자 테스트
 * 	 비교연산의 결과는 boolean type을 리턴해준다.
 * ==, !=, >, >=, <, <=
 */
public class MainClass03 {
	public static void main(String[] args) {
		
		boolean result1 = 10 == 10; //true
		boolean result2 = 10 != 10; //false
		boolean result3 = 10 > 100; //false
		boolean result4 = 10 >= 10; //true
		boolean result5 = 10 < 100; //true
		boolean result6 = 10 <= 10; //true
		
		//string type 변수 name에 null 대입하기
		String name=null;
		
		//null인지 아닌지 비교가 가능하다(즉 java에서 null값은 비교가 가능)
		boolean result7 = name == null; //true
		boolean result8 = name != null; //false
	}
}

- 비교연산의 결과는 boolean type 으로 나온다.

- Oracle에서는 null은 비교 불가능했지만(=>< 대신 is not null, is null만 사용), java에서는 가능하다.
 null이 비어 있는지 아닌지를 비교하는 것이라고 생각하면 된다.

 


 

MainClass04 : 논리연산자

package test.main;
/*
 * 4. 논리연산자 테스트
 */
public class MainClass04 {
	public static void main(String[] args) {
		//or 연산
		/*
		 * 또는 이라고 읽으면 된다.
		 * 
		 * 어느 하나만 true이면 결과는 true
		 * 모두다 false 일때만 결과는 false
		 */
		boolean result1 = false || false; //false
		boolean result2 = false || true; //true
		boolean result3 = true || false; //true
		boolean result4 = true || true; //true
		//and 연산
		/*
		 * 그리고 라고 읽으면 된다.
		 * 
		 * 모두다 true일 때만 결과는 true
		 * 어느 하나만 false면 결과는 false
		 */
		boolean result5 = false && false; //false
		boolean result6 = false && true; //false
		boolean result7 = true && false; //false
		boolean result8 = true && true; //true
		//not 연산
		/*
		 * ~가 아니면 이라고 읽으면 된다.
		 * 
		 * boolean 값을 반전시킨다. 
		 */
		boolean result9 = !true; //false
		boolean result10 = !false; //true
	}
}

- || (파이프문자) : or 의미(javascript와 같다). 어느 하나만 true이면 값은 true!

- && : and 의미 : 둘 다 true여야만 true. 그 외의 모든 경우는 false!

 


 

MainClass05 : 대입연산자

package test.main;
/*
 * 5. 대입연산자 테스트
 */
public class MainClass05 {
	public static void main(String[] args) {
		int num=10;
		//num=num+2;
		num += 2;
		//num=num-3;
		num -= 3;
		//num=num*4
		num *= 4;
		//num=num/5;
		num /= 5;
		//num=num%6;
		num %= 6;
	}
}

- 참고하기. =, +=, -= 정도만을 제일 자주 쓴다.

 


 

MainClass06 : 3항 연산자 (if~else)

package test.main;
/*
 * 6. 3항 연산자 테스트
 */
public class MainClass06 {
	public static void main(String[] args) {
		boolean isWait=true;
		//isWait이 true면 "기다려요"가 대입되고 false면 "기다리지 않아요"가 대입된다.
		String result = isWait ? "기다려요" : "기다리지 않아요";
		
		System.out.println(result);
		
		//위의 3항 연산자는 아래와같이 if~else문과 같은 로직이다.
		String result2=null;
		if(isWait) {
			result2="기다려요";
		}else {
			result2="기다리지 않아요";
		}		
		System.out.println(result2);		
	}
}

 

A ? B : C;

- ?: 사이에 A, B, C 3개의 항이 있어서 3항 연산자라고 부른다.

 

[ 3항 연산자 연산 법칙 ]
- A(true) ? B : C ; : A가 true이면 B를 남긴다.
- A(false) ? B : C ; : A가 false이면 C를 남긴다.
 
- 아래 로직(if~else문)과 동일한 내용이다.

 if~else문을 더 간편하게 사용할 수 있는 연산자라고 보면 된다.

 

- 콜론(:) 의 좌측이 남으면 좌측이 대입되고, 우측이 남으면 우측이 대입되는 것.
 좌측이 남을지 우측이 남을지를 결정하는것이 ? 앞의 불리언 타입(A항)