JAVA_연산자 (Operator)

JW__1.7·2022년 7월 23일
0

JAVA 공부일지

목록 보기
3/30

연산자 우선순위

  • 동일한 우선순위의 연산은 왼쪽에서 오른쪽으로 진행한다.
  • 우선순위를 조정하려면 먼저 처리할 연산을 ( )로 묶어서 처리하면 된다.

    ++(postfix), --(postfix)
    +(양수 부호), -(음수 부호), ~, !, ++(prefix), --(prefix)
    강제 형 변환(Casting)
    , /, %
    +(덧셈), -(뺄셈)
    <<, >>, >>>
    <, >, <=, >=, instanceof
    ==, !=
    &(비트 AND)
    ^(비트 XOR)
    |(비트 OR)
    &&(논리 AND)
    ||(논리 OR)
    ? :
    =, +=, -=,
    =, /=, %=

    * 위로 갈수록 우선순위가 높고, 아래로 갈수록 우선순위가 낮다.

산술 연산자

  • 정수 연산 : 더하기(+), 빼기(-), 곱하기(*), 몫(/), 나머지(%)
  • 실수 연산 : 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)

  • 몫과 나머지를 이용한 연산이 많이 사용된다.
    • 25의 앞자리와 뒷자리 분리 : 25를 10으로 나눈 몫은 2, 나머지는 5
    • 짝수와 홀수 : 2로 나눈 나머지가 0이면 짝수, 1이면 홀수
    • 3의 배수 : 3으로 나눈 나머지가 0이면 3의 배수
    • 0 ~ 6 사이 값 사용 : 7로 나눈 나머지를 사용
int n = 25;
int ten = n / 10;	// 2 출력
int one = n % 10;	// 5 출력

문자열 연산자

문자열 연결 연산자 : +

  • "문자열1" + "문자열2" → "문자열1문자열2"
    "안녕" + "하세요" → "안녕하세요"
  • 숫자 + "문자열" → "숫자문자열"
    100 + "주년" → "100주년"
    1 + 1 + "행사" → "2행사"
  • 숫자를 문자열로 변경하는 가장 간단한 방법
    - 숫자에 빈문자열("")을 더함
    100 + "" → "100"
  • 연산을 이용한 문자열 만들기
    - 빈 문자열("")을 더함
	String str1 = 100 +"";	 // String.valueOf(100)과 동일.
	System.out.println(str1);   // "100"

* 자주 사용하므로 많이 연습하기!

대입 연산자

대입 연산 : =, 등호(=) 오른쪽의 값을 왼쪽으로 대입한다.
int score = 95; → 95를 score에 대입.
int 95 = score → score를 95에 대입X

x와 y에 저장된 값을 서로 교환하시오.
	int x = 10;
	int y = 20;
	int temp;
		
	temp = x;
	x = y;
	y = temp;
		
	System.out.println(x);	// 20 출력
	System.out.println(y);	// 10 출력

복합 대입 연산 : 더하기(+=), 빼기(-=), 곱하기(*=), 나누기(/=), 나머지(%=) ...

	int wallet = 0;
	wallet += 5000;		// wallet = wallet + 5000;
	wallet -= 3000;		// wallet = wallet - 3000;
통장 잔액(balance)에서 이자 5%를 받았음을 나타내자.
	long balance = 10000;								
	balance *= 1.05;		// balance를 double로 Promotion해서 처리한다.
    
	System.out.println(balance);	// 10500 출력

증감 연산자

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

전위 연산 : 변수 a의 값을 1 증감시키고 사용한다. (ex. ++a, --a)

	int a = 1;
	int b = ++a;
	System.out.println(a);	// 2 출력
	System.out.println(b);	// 2 출력

후위 연산 : 변수 a의 값을 사용 후 1 증감시킨다. (ex. a++, a--)

	int x = 1;
	int y = x++;
	System.out.println(x);	// 2 출력
	System.out.println(y);	// 1 출력
i=1, j=1일 때 i++ + --j 를 구하자.
	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 출력

비교 연산자

  • 값을 비교하여 boolean 결과(true, false)를 반환한다.
  • 6개 연산이 있다

    > : 초과
    < : 미만
    >= : 이상
    <= : 이하
    == : 같다
    != : 다르다

	int a = 7;
	int b = 2;
		
	boolean result1 = a > b;	// true
	boolean result2 = a < b;	// false
	boolean result3 = a >= b;	// true
	boolean result4 = a <= b;	// false
	boolean result5 = a == b;	// false
	boolean result6 = a != b;	// true

논리 연산자

  • 논리 AND : &&, 모두 true이면 true / 하나라도 false이면 false
  • 논리 OR : ||, 하나라도 true이면 true / 모두 false이면 false
  • 논리 NOT : !, true이면 false / false이면 true
	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
		
	int c = 10;
	boolean result5 = !(c == 10);	// false
	boolean result6 = !(c == 20);	// true
변수 n=95를 10 증가시킨 뒤 n이 100보다 크다면 true, 아니면 false
	int n = 95;
	boolean result7 = (n += 10) > 100;
	System.out.println(n);	 // 105 출력
	System.out.println(result7);	//true
변수 x=9를 1 증가시킨 뒤 x가 10과 같으면 true, 아니면 false
	int x = 9;
	boolean result8 = ++x == 10;
	System.out.println(x);	// 10 출력
	System.out.println(result8);	//true
  • Short Circuit Evaluation : 논리 AND나 논리 OR의 연산 결과를 이미 알고 있는 경우 더 이상 연산을 진행하지 않는 것을 의미한다.
    - 논리 AND
    : false가 발생하면 더 이상 진행하지 않는다. 최종 결과는 false이므로.
    - 논리 OR
    : true가 발생하면 더 이상 진행하지 않는다. 최종 결과는 true이므로.
	int i = 10;
	int j = 10;
	boolean result9 = (i == 20) && (++j == 11);
	System.out.println(result9);	// false
	System.out.println(j);	// 11이 아니라 10 _ 진행하지 않았기 때문에
		
	boolean result10 = (i == 10) || (++j == 11);
	System.out.println(result10);	// true
	System.out.println(j);	// 11이 아니라 10 _ 진행하지 않았기 때문에

조건 연산자

  • 조건식 ? true인 경우 값 : false인 경우 값
  • 3개 항을 사용하기 때문에 삼항 연산자라고 한다.
public class Operator {
	public static void main(String[] args) {
		
		int age = 17;
		String message;
		message = (age >= 20) ? "성인" : "미성년자";
		System.out.println(message);
	}
}
순위가 1이면 "금", 2이면 "은", 3이면 "동메달",
	int rank = 1;
	String medal = (rank == 1) ? "금" : (rank == 2) ? "은" : (rank == 3) ? "동" : "없음";
	System.out.println(medal);    // 금메달
홀수는 "홀수", 짝수는 "짝수"로 나타내자.
	int n = 2;
	String type = (n % 2 == 1) ? "홀수" : "짝수";
	System.out.println(type);    // 짝수
홀수는 "홀수" , 짝수는 "짝수" , 3의 배수는 "3의배수"로 나타내자. (단, 0은 고려하지 않는다.)
	int a = 15;
	String type2 = (a % 3 == 0) ? "3의배수" : (a % 2 == 1) ? "홀수" : "짝수";
	System.out.println(type2);    // 3의배수
주민등록번호 뒷 7자리 중 첫 번째 숫자가 홀수라면 "남자" / 짝수라면 "여자"
	int serial = 1234567;
	String gender = (serial / 1000000) % 2 == 1 ? "남자" : "여자";
	System.out.println(gender);    // 남자

0개의 댓글