본문 바로가기
Programming Languages/Java

Chapter 6. 연산자

by 더 이프 2023. 1. 8.
728x90

목차

    1. 연산자

    ■ 항과 연산자

    • 연산에 사용되어 지는 값을 항이라고 함
    • 연산에 사용되어지는 기호를 연산자라고 함

    ■ 연산자 종류

    • 단항 연산자
      • 항이 한 개인 연산자
      • ++num, num--
    • 이항 연산자
      • 항이 두 개인 연산자
      • num1 + num2
    • 삼항 연산자(조건 연산자)
      • 항이 세 개인 연산자
      • 프로그램에만 존재
      • 조건 ? 결과 1(참) : 결과2(거짓)
      • 조건식이 참이면 결과 1을 반환, 거짓이면 결과 2를 반환
      • 결과 1과 결과 2는 같은 자료형이어야 가능
    • 대입 연산자
      • 변수에 값을 대입하는 연산자
      • =을 사용
    • 부호 연산자
      • +(양수), -(음수)를 통해 부호를 표현함
    • 산술 연산자
      • +(두 항을 더함)
      • -(앞에 있는 항에서 뒤에 있는 항을 뺌)
      • *(두 항을 곱합)
      • /(앞에 있는 항에서 뒤에 있는 항을 나누어 몫을 구함)
      • %(앞에 있는 항에서 뒤에 있는 항을 나누어 나머지를 구함)
    • 증감 연산자
      • ++(항의 값에 1을 더함)
      • --(항의 값에 1을 뺌)
      • 항의 앞에 붙을 수도 있고, 뒤에 붙을 수도 있음
    • 관계 연산자
      • <(뒤의 항보다 앞의 항이 작으면 참)
      • >(뒤의 항보다 앞의 하이 크면 참)
      • <=(뒤의 항보다 앞의 항이 작거나 같으면 참)
      • >=(뒤의 항보다 앞의 항이 크거나 같으면 참)
      • ==(뒤의 항과 앞의 항이 같으면 참)
      • !=(뒤의 항과 앞의 항이 다르면 참)
      • 알고리즘 사용 시 왠만하면 <, >만 사용하는 것이 좋음
    • 복합 대입 연산자
      • +=(앞의 항과 뒤의 항을 합친 값을 앞의 항에 대입)
      • -=(앞의 항과 뒤의 항을 뺀 값을 앞의 항에 대입)
      • *=(앞의 항과 뒤의 항을 곱한 값을 앞의 항에 대입)
      • /=(앞의 항과 뒤의 항을 나눈 값의 몫을 앞의 항에 대입)
      • %=(앞의 항과 뒤의 항을 나눈 나머지 값을 앞의 항에 대입)
      • num1 += num2와 num1 = num1 + num2랑 같음

     

    2. 예시

    ■  Operation1

    package j04_연산자;
    
    public class Operation1 {
    
    	public static void main(String[] args) {
        
    		int add = 1 + 2;
    		int sub = 10 - 5;
    		int mul = 10 * 2;
            
    		// 실수형으로 나누면 소수점까지 나옴
    		int div = 10 / 4;
    		// 나머지가 0인 것은 뒤 수의 배수
    		int remainder = 10 % 5; 
    		
    		System.out.println(add);
    		System.out.println(sub);
    		System.out.println(mul);
    		System.out.println(div);
    		System.out.println(remainder);
    		
    		System.out.println(remainder == 0 ? "5의 배수이다" : "5의 배수가 아니다");
    	}
    }

    ■ Operation2

    package j04_연산자;
    
    public class Operation2 {
    	
    	public static void main(String[] args) {
        
    		int num = 10;
            
    		num = num + 1;
    		
    		System.out.println(num);
            
    		// 선증가는 1 + num으로 더해진 후 출력
    		System.out.println(++num);
    		// 후증가는 num + 1으로 num이 출력된 후 더해짐
    		System.out.println(num++);
            
    		System.out.println(num++);
    		System.out.println(num);
    	}
    }

    ■ Operation3

    package j04_연산자;
    
    /*
     * 논리 연산자
     * AND(곱) T && T, T && F
     * OR(합) T || F
     * NOT(부정) !T
     */
    public class Operation3 {
    
    	public static void main(String[] args) {
        
    		int num = 11;
    		
    		boolean flag1 = true;
    		boolean flag2 = true;
    		boolean flag3 = num % 2 > 0;
    		
    		System.out.println(flag1 && flag2);
    		System.out.println(flag1 && flag3);
    		System.out.println(!(flag2 || flag3 && flag1));
    	}
    }

    ■ Operation4

    package j04_연산자;
    
    public class Operation4 {
    
    	public static void main(String[] args) {
        
    		int num = 100;
    		
    		num = num + 1;
    		num -= 100; 
    		num *= 10;
    		num %= 3;
    		
    		System.out.println(num);
    	}
    }

    ■ Operation5

    package j04_연산자;
    
    public class Operation5 {
    
    	public static void main(String[] args) {
        
    		int num1 = 10;
    		int num2 = 5;
    		
    		int result = num1 > num2 ? num1 * -1 : num2 * -1;
    		
    		System.out.println(result);
    		
    		int num = 79;
    		int result2 = num / 90 == 1 ? 90 
    				: num / 80 == 1 ? 80 
    				: num / 70 == 1 ? 70 : 0;
    		
    		System.out.println(result2);
    	}
    }

    ■ Operation6

    package j04_연산자;
    
    public class Operation6 {
        /*
         * 시험 성적을 학점으로 계산하는 프로그램
         * 
         * 정수자료형 score변수 선언
         * 88점으로 초기화
         * 
         * 문자자료형 grade변수 선언
         * 
         * 조건
         * score가 0점보다 작거나 100점보다 크면 x를 출력
         * score가 90 ~ 100점이면 A학점
         * score가 80 ~ 89점이면 B학점
         * score가 70 ~ 79점이면 C학점
         * score가 60 ~ 69점이면 D학점
         * score가 0 ~ 59점이면 F학점
         */
    	public static void main(String[] args) {
    
    		int score = 88;
    		char grade;
    		char plus;
    				
    		grade = score < 0 || score > 100 ? 'X' 
    				: score > 89 ? 'A' 
    				: score > 79 ? 'B' 
    				: score > 69 ? 'C' 
    				: score > 59 ? 'D' : 'F';
                    
    		plus = score > 100 || score < 60 ? '\0' : score % 10 > 4 || score == 100 ? '+' : '\0';
    				
    		System.out.println("점수(" + score + ") : " + grade + plus + "학점");
    	}
    }