[JAVA] 연산자 - 단항 연산자, 이항 연산자, 삼항 연산자

1. 연산자


: 어떠한 기능을 수행하는 기호

 

 

  • 피연산자

: 연산자의 작업 대상

 

 

  • 연산자 우선순위

① 산술 > 비교 > 논리 > 대입
② &&, &(and) > ||, |(or) 
③ 덧셈연산자 > shift 연산자

 

 

  • 산술 변환

: 피연산자의 자동 형변환

① 두 피연산자의 타입을 같게 일치시킴(둘 중 더 큰 타입으로)

② 피연산자의 타입이 int보다 작은 타입이면 int로 변환

 

 

 

2. 단항 연산자


  • 증감연산자(++ --)
 j = ++i; // 선 증감 후 연산
 j = i++; // 선 연산 후 증감
int i = 5;
int j = 0;
		
j = i++;
System.out.printf("j=i++; 실행 후, i=%d, j =%d%n", i, j); // j=i++; 실행 후, i=6, j =5
		
i = 5;
j = ++i;
System.out.printf("j=++i; 실행 후, i=%d, j =%d%n", i, j); // j=++i; 실행 후, i=6, j =6

 

 

  • 논리 부정연산자(!)

: 피연산자가 boolean 일 때만. true → false / false → true

 

 

  • 비트 전환연산자 (~)

: 정수를 2진수로 표현했을때, 1 → 0 / 0→ 1

 

 

3. 이항 연산자


  • 산술 연산자
byte a = 10;
byte b = 30;
byte c = (byte)(a*b);
System.out.println(c);

※ byte 끼리 연산 후 결과를 byte로 받으려면 형변환 필요

 

 

소수점 첫째자리에서 반올림

 

Math.round() : 매개변수를 소수점 첫째자리에서 반올림하고 결과값을 정수로 돌려줌

public class OperatorEx {

	public static void main(String[] args) {
		
		double pi3 = 3.141592;
		double shortpi3 = Math.round(pi3 * 1000) / 1000.0;
		System.out.println(shortpi3); // 3.142
	}

}

 

 

  • 비교 연산자

문자열 비교

 

== : 내용이 같아도 객체가 다르면 false 반환

equals() : 객체가 달라도 내용이 같으면 true 반환

equalsIgnoreCase() : 대소문자 구별 x

public class OperatorEx {

	public static void main(String[] args) {
		String str1 = "abc";
		String str2 = new String("abc");
		
		System.out.printf("\"abc\"== \"abc\" ? %b%n", "abc"=="abc");
		System.out.printf("str1== \"abc\" ? %b%n", str1=="abc");
		System.out.printf("str2== \"abc\" ? %b%n", str2=="abc");
		System.out.printf("str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
		System.out.printf("str2.equals(\"abc\") ? %b%n", str2.equals("abc"));
		System.out.printf("str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
		System.out.printf("str2.equalsIgnoreCase(\"abc\") ? %b%n", str2.equalsIgnoreCase("ABC"));
		
	}

}

 

 

  • shift 연산자(<<, >>, >>>)

<< : 지정된 수만큼 비트를 좌측 이동(x2)

>> : 부호를 유지하면서 지정된 수만큼 우측 이동(/2)

>>> : 지정된 수만큼 비트를 우측 이동 & 새로운 비트는 전부 0(무조건 양수)

i << n == i  * 2^n
i >> n == i / 2^n

 

 

  • 비트연산자(& | ^)

OR 연산자(|) : 피연산자 중 어느 한쪽이 1이면 1
AND 연산자(&) : 피연산자 양 쪽 모두 1이면 1
XOR 연산자(^) : 피연산자 서로 다르면 1

 

 

  • 논리연산자(& | && ||) - boolean

: &&나 ||처럼 기호가 2개 사용되는 경우 앞의 식이 거짓이면 뒤에 있는 식은 실행 x

 


4. 삼항 연산자(? :)


: 조건식이 true이면 식1 결과 반환 / false이면 식2 결과 반환

(조건식) ? 식1 : 식2