03. 연산자 [ JAVA ]

duck-ach·2022년 7월 20일
0

JAVA

목록 보기
3/27

연산자 우선순위

연산자 종류

산술 연산자

종류

  • 정수 연산 : 더하기(+), 빼기(-), 곱하기(*), 몫(/), 나머지(%)
  • 실수 연산 : 더하기(+), 빼기(-), 곱하기(*), 몫(/), 나머지(%)
  • 주로 몫과 나머지를 이용한 연산이 많이 활용된다.
    • 25의 앞자리와 뒷자리 분리
    • 짝수와 홀수
    • ~의 배수
    • 0~6 사이 값 사용
  • 25의 앞자리와 뒷자리 분리

    public class Abstract25{
    	public static void main(String[] args) {
     	int a = 25;
        int result1;
        int result2;
        
        result1 = a / 10; //2
        result2 = a % 10; //5
        }
    }
  • 짝수와 홀수( 25, 34, 50이 짝수인지 홀수인지 구하시오.)

    public class EvenOddNumber {
    	public static void main(String[] args) {
     	int x = 25;
         int y = 34;
         int z = 50;
         
         boolean xResult = (x % 2) = 0; //false, 홀수
         int yResult = (y % 2) = 0; //true, 짝수
         int zResult = (z % 2) = 0; //true, 짝수
         
         System.out.println("xResult : " + xResult);
         System.out.println("yResult : " + yResult);
         System.out.println("zResult : " + zResult);
         
        }
    }

    xResult는 2로 나누었을때 나머지가 0이 아니어서 false이므로 홀수이고,
    yResult와 zResult는 2로 나누었을때 나머지가 0이라서 true이므로 짝수이다.

문자열 연산자

종류

문자열 연결 연산자(+)

  • "문자열" + "문자열" = "문자열문자열"
    ex) "안녕" + "하세요" = "안녕하세요"
  • 숫자 + "문자열" = "숫자문자열"
    ex) 9 + "월" + 2 + "일"= "9월2일"
  • 숫자를 문자열로 변경하는 가장 간단한 방법(숫자 + 빈문자열(""))
    ex) 10 + "" = "10"

대입 연산자

종류

  • 대입 연산 : 등호(=), 오른쪽의 값을 왼쪽으로 대입함.
  • 복합 대입 연산 : 더하기(+=), 빼기(-=), 곱하기(*=), 나누기(/=), 나머지(%=) 등

대입 연산의 형식 :
a = 10 → 10을 a에 대입
10 = a → a를 10에 대입(불가능)

복합 대입 연산의 형식 :

  • a += 2 → a = a + 2;
  • a -= 2 → a = a - 2;
  • a = 2 → a = a 2;
  • a /= 2 → a = a / 2;
  • a %= 2 → a = a % 2;

x에 10이있고, y에 20이 있을 때, x와 y에 저장된 값을 서로 교환하시오. (Hint : int temp;)

piblic class ChangeXY {
	public static void main(String[] args) {
    
    int a = 10;
    int b = 20;
    
    int temp = x;
    x = y;
    y = temp;
    
    System.out.println(x); // 20
    System.out.println(y); // 10
    
    }
}

잔액(balance)에서 이자 5%를 받았음을 나타내자.

piblic class Balance5 {
	public static void main(String[] args) {
    
    long balance = 10000;
    balance *= 1.05; //balance를 double로 promotion해서 처리한다. (실수 > 정수)
    System.out.println(balance); // 10500
    
    }
}

증감 연산자

종류

  • 증가연산 (++), 1 증가
  • 감소연산 (--), 1 감소
  • 전위연산(prefix)와 후위연산(postfix)로 구분함

전위연산
변수 a의 값을 연산 전에 1 증가시키고 사용한다.

piblic class Prefix {
	public static void main(String[] args) {
    
    int a = 1;
    int b = ++a;
    System.out.println(a); //2
    System.out.println(b); //2
    
    }
}

후위연산
변수 x의 값을 사용하고나서 1 증가시킨다.

piblic class Postfix {
	public static void main(String[] args) {
    
    int x = 1;
    int y = x++;
    System.out.println(x); //2
    System.out.println(y); //1
    
    }
}

응용
전위연산(prefix) + 후위연산(postfix)

int i = 1; , int j = 1; 일때, i++ + --j 값을 구하시오.

piblic class PrefixPostfix {
	public static void main(String[] args) {
    
	int i = 1;
    int j = 1;
    int result = i++ + --j;
    System.out.println(i); // 2
    System.out.println(j); // 0
    System.out.println(result); // (1 + 0) = 1
    
    }
}

i++는 후위 연산자 이므로 연산할 당시에는 1로 연산을 수행한다.

비교 연산자

종류

초과(>), 미만(<), 이상(>=), 이하(<=), 같다(==), 다르다(!=)

  • 연산의 결과는 Boolean (true, false)
piblic class CompareAB {
	public static void main(String[] args) {
    	int a = 7;
        int b = 2;
        
        boolean result1 = a > b; // true
        boolean result2 = a < b; // true
        boolean result3 = a >= b; // true
        boolean result4 = a <= b; // true
        boolean result5 = a == b; // true
        boolean result6 = a != b; // true

    
    }
}

논리 연산자

종류

논리 AND : &&, 모두 true이면 true / 하나라도 false이면 false
논리 OR : ||, 하나라도 true이면 true / 모두 false이면 false
논리 NOT : !, true이면 false / false이면 true
piblic class Logic {
	public static void main(String[] args) {
    	//AND, OR
        int a = 10;
        int b = 10;
        boolean result1 = (a == 10) && (b == 10); //true
        boolean result2 = (a == 10) || (b == 10); //true
        boolean result3 = (a == 10) && (b == 20); //false
        boolean result4 = (a == 10) || (b == 20); // true
        
        //NOT
        int c = 10;
        boolean result5 = !(c == 10); //false
        boolean result6 = !(c == 20); //true
        

    
    }
}

변수 n에 10증가시킨 뒤 100보다 크다면 true, 아니면 false. ( n = 95 )

piblic class LogicExample1 {
	public static void main(String[] args) {
    	
        int n = 95;
        boolean result = (n += 10 ) > 100;
        System.out.println(n); //
        System.out.println(result)
        

		//주의할 점 : +를 하면 result 결과는 true 일 수 있지만, 
        //대입연산자로 연산을 한게 아니라서 n을 도출 했을 때는 95의 결과를 얻을 수 있다.
    
    }
}

변수 x를 1증가시킨 뒤 x가 10과 같으면 true, 아니면 false. ( x = 9 )

piblic class LogicExample2 {
	public static void main(String[] args) {
    	
       	int x = 9;
        boolean result = ++x == 10;
        System.out.println(x);
        System.out.prinln(result);

		
    }
}

Short Circuit Evaluation

논리 AND : false가 발생하면 더 이상 진행하지 않는다. 최종 결과는 false이므로.
논리 OR : true가 발생하면 더 이상 진행하지 않는다. 최종결과는 true이므로.

piblic class ShortCircuitEvaluation {
	public static void main(String[] args) {
    	int i = 10;
		int j = 10;
		boolean result9 = (i == 20) && (++j == 11);
		System.out.println(result9); //false
		System.out.println(j); //11이 아니라 10이 나왔다.
		// 앞의 조건이 false가 발생하여 뒤의 ++j연산은 진행하지 않았다.
		
		boolean result10 = (i == 10) || (++j == 11);
		System.out.println(result10);
		System.out.println(j); //11이 아니라 10이 나왔다.
		// 앞의 조건이 true가 발생하여 뒤의 ++j연산은 진행하지 않는다.
       	
		
    }
}

조건 연산자

종류

조건을 만족하는 경우와 그렇지 않은 경우 모두를 처리하는 연산
형식
조건 ? 만족하는경우 : 만족하지 않는 경우

점수가 60점 이상일 경우 합격, 그렇지 않으면 불합격.

public class Conditon {
	public static void main(String[] args) {
    	int score = 100;
        String result = (score >= 60) ? "합격" : "불합격"; //합격 
        System.out.println(result);
    	}
}
        

이렇게 조건과 물음표 뒤에 올때 true일 경우 바로 앞의 문장이 출력되고, 그렇지 않으면 콜론(:)뒤의 문장이 출력된다.

순위가 1이면 "금메달", 순위가 2이면 "은메달", 순위가 3이면 "동메달, 나머지 순위는 "없음".

public class Medal {
	public static void main(String[] args) {
    	int rank = 1;
		String medal = (rank == 1) ? "금메달" : (rank == 2) ? "은메달" : (rank == 3) ? "동메달" : "없음";
		System.out.println(medal);
    	}
}
        

주민등록번호 뒷 7자리 중 첫 번째 숫자가 1, 3, 5이면 "남자", 2, 4, 6이면 "여자"를 출력하시오.

public class Medal {
	public static void main(String[] args) {
    	int serial = 2234567;
		String gender = (serial / 1000000) % 2 == 1 ? "남자" : "여자";
		System.out.println(gender);
    	}
}
        
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글