본문 바로가기
뒷북 정리 (국비 교육)/java

[Java] step03. Operator

by 규글 2022. 4. 11.

step03. Operator

 3항 연산자 내용을 제외한 01에서 05까지의 내용은 javascript와 거의 같다.

 

- 01

/*
 *  1. 산술연산자
 *  
 *  +, -, *, /, %
 */
		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;

 산술 연산은 javascript와 거의 동일하다. 하지만 하나 조심해야하는 부분은 실수 계산이다. 연산의 결과로 실수 값을 얻어내고 싶다면 연산 과정에 적어도 하나는 실수여야 한다. 혹시라도 중간에 실수값이 없다면 연산 결과도 실수값으로 나오지 않는다. 예시의 5를 3으로 나눈 경우에는 값이 소수를 버린 1로 나오게 된다.

 

- 02

/*
 *  2. 증감 연산자
 *     변수에 있는 숫자 값을 1씩 증가 혹은 1씩 감소 시킬때 사용한다. 
 *  ++, --
 */
		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 가 1 증가한다. 
		
		int num4=0;
		int num5=0;
		int result3=num5++;
		int result2 = ++num4; // num4 가 1 증가하고 result2 에 1 이 대입된다.

 증감 연산도 javascript와 동일하다. 증감 연산자를 어디에 넣는가에 따라 결과가 달라지게 된다는 점만 다시금 기억하고 넘어가면 좋을 것 같다. 변수의 앞에 넣는다면 해당 변수의 값이 변한 다음 대입되고, 변수의 뒤에 넣는다면 대입이 먼저 된 후에 변수의 값이 변하게 된다. 

 

- 03

/*
 *  3. 비교 연산자
 *     비교 연산의 결과는 boolean type 을 return 해준다. 
 *  ==, !=, >, >=, <, <= 
 */
		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

 비교 연산도 javascript와 동일하다. 비교 연산의 결과는 boolean type을 return 한다. 한 가지 다른 점은 변수에 'null' 을 대입할 수 있고, null인지 아닌지 여부까지 비교할 수도 있다. (참고 : oracle에서는 is null, is not null 로 비교한다.)

 

- 04

/*
 *  4. 논리 연산자
 */
		// or 연산 
		boolean result1 = false || false; //false
		boolean result2 = false || true; //true
		boolean result3 = true || false; //true
		boolean result4 = true || true; //true
        
		// and 연산
		boolean result5 = false && false; //false
		boolean result6 = false && true; //false
		boolean result7 = true && false; //false
		boolean result8 = true && true; //true
        
		// not 연산
		boolean result9 = !true; //false
		boolean result19 = !false; //true
		
		boolean isRun=false;
		if(isRun != true){
			System.out.println("달리지 않아요");
		}
		
		if(!isRun){
			System.out.println("달리지 않아요2");
		}

 논리 연산도 javascript와 동일하다. or 연산은 둘 중 하나라도 true인 경우에 true를, and 연산은 둘 다 true인 경우에 true를 return한다. 이 논리 연산은 if문 안에서도 사용 가능하다.

 

- 05

/*
 *  5. 대입 연산자
 *  
 *  +=, -=, *=, /=, %= 
 */
		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;

 대입 연산자도 javascript와 동일하다. 그냥 '=' 만이 대입 연산자인 것이 아니다. 산술 연산자와 대입 연산자를 이어서 연산과 대입을 동시에 수행할 수 있다.

 

- 06

/*
 *  6. 3항 연산자
 */
		boolean isWait=false;
		// isWait 이 true 면 "기다려요" 가 대입되고 false 면 "기다리지 않아요" 가 대입된다.
		String result = isWait ? "기다려요" : "기다리지 않아요";
		
		System.out.println(result);
		
		// 위의 3항 연산자는 아래와 같이 if ~ else 문과 같은 logic이다. 
		String result2=null;
		if(isWait) {
			result2="기다려요";
		}else {
			result2="기다리지 않아요";
		}
		System.out.println(result2);

 '3항 연산자' 는 javascript에는 없던 java에 있는 연산자이다. 이름 그대로 3개의 항으로 이루어져 있다. A 자리에는 비교 연산이나 true나 false 그 자체로 boolean type이 들어간다. 만약 A 자리가 true면 B 자리에 있는 value로, A 자리가 false면 C 자리에 있는 value로 그 자리가 대체되어 변수에 대입된다. 때문에 변수를 만드려고 한다면 바뀌는 value에 맞는 data type에 맞게 선언해주어야 한다.

 사실 이것은 if~else 문 구조와 같다. 어떤 조건문이 true일 경우와 false인 경우에 맞게 다른 내용이 수행되는 것으로 구분한다고 생각해보면 알 수 있을 것이다.

'뒷북 정리 (국비 교육) > java' 카테고리의 다른 글

[Java] step05. Method  (0) 2022.04.13
[Java] step04. Class  (0) 2022.04.13
[Java] step02. Data type  (0) 2022.04.11
[Java] step01. Hello  (0) 2022.04.05
Java 설치 및 eclipse 설정  (0) 2022.04.05

댓글