연산자 정의, 우선순위
- 연산자 : 연산을 수행하는 기호
- 피연산자 : 연산자의 작업 대상(변수, 상수, 리터럴, 수식 등)
- 우선순위
- 산술 > 비교 > 논리 > 대입
- 단항 > 이항 > 삼항
- 단항, 대입 연산자를 제외한 모든 연산자는 좌측에서 우측 순이다.
산술 연산자
- + : System.out.println( 3 + 5 ); // 8
- - : System.out.println( 3 - 5 ); // -2
- * : System.out.println( 3 * 5 ); // 15
- / : System.out.println( 3 / 5 ); // 0 : 몫 연산자 -> 정수/정수하여 결과가 정수 나옴
System.out.println( 3 / 0 );
System.out.println( 3.14 / 0 ); //결과 : Infinity(무한대) 리터럴값
- % : System.out.println( 3 % 5 ); // 3 : 나머지 연산자
System.out.println( 3 % 0 );
System.out.println( 3.14 % 0 ); //결과 : NaN(Not a Number) 리터럴 값
- 어떤 정수를 0으로 나누거나 나머지를 구할 때 오류 발생
└> ArithmeticException(산술적 예외 발생): / by zero
- 우선순위 : (* / %) -> (+ -)
비교 연산자
- 연산 결과가 Boolean(true, false) 값으로 나옴
- > : System.out.println(3 > 5); // false
- < : System.out.println(3 < 5); // true
- <= : System.out.println(3 >= 5); // false
- >= : System.out.println(3 <= 5); // true
- == : System.out.println(3 == 5); // false
- != : System.out.println(3 != 5); // true
일반 논리 연산자
- && : 일반 논리 AND 연산자
true(1) && true(1) => true(1)
true(1) && false(0) => false(0)
false(0) && true(1) => false(0)
false(0) && false(0) => false(0)
- || : 일반 논리 OR 연산자
true(1) && true(1) => false(0)
true(1) && false(0) => true(1)
false(0) && true(1) => true(1)
false(0) && false(0) => true(1)
- ! : 부정(NOT) 연산자 -> 주의할 점 : Boolean형 값 앞에만 사용할 수 있다.
! true(1) => false(0)
! false(0) => true(1)
- 4. 우선순위 : ! > && > ||
- ex 1) x는 10보다 크고, 20보다 작다
10 < x < 20 -> X
x > 10 && x < 20 -> O
- ex 2) i는 2의 배수 또는 3의 배수이다.
i % 2 == 0 || i % 3 == 0
- ex 3) 문자 ch는 숫자 ('0'~'9')이다.
ch >= '0' && ch <= '9’
비트 논리 연산자
- ~ 틸드(비트 부정) 연산자 : 0 -> 1, 1 -> 0 0000 0100
~10 -> -11 => 0b 0000 1010 -> 0b 1111 0101 0000 0011
- & (비트 AND) 연산자 : 둘 다 1일 때 1, 하나라도 0이면 0 & 0000 0000
- | (비트 OR) 연산자 : 둘 다 0일 때 0, 하나라도 1이면 1 | 0000 0111
- ^ (비트 XOR) 연산자 : 두 값이 다를 때 1, 같으면 0 ^ 0000 0111
시프트 연산자
- << : 빈 공백을 무조건 0으로 채운다.
x * 2^n
0000 1111 << 2 => 0011 1100
- >> : 최상위 비트가 0(양수) 면 빈 공백을 0으로 채우고, 1(음수) 면 1로 채운다.
x e 2^-n
0000 1111 >> 2 => 0000 0011
1000 1111 >> 2 => 1110 0011
└> 최상위 비트
- >>> : 빈 공백을 무조건 0으로 채운다.
증감 연산자(++, --)
- 전위형, 후위형 증감 연산자가 있다.
- 단독으로 사용될 때는 전위형, 후위형 같은 결과
- 다른 변수와 같이 사용될 때는 전위형은 먼저 증가한 것을 사용하고, 후위형은 사용된 후에 증가한다.
복합 대입 연산자( op= )
- 종류 : +=, -=, *=, /=, %=, <<=, >>= 등
- 연산 방법 : x op= n; == x = x op n;
문자열 비교방법
- equals() 함수 사용, == 비교 연산자 사용 X
효율적인 연산
- && 연산자 (true && true = true)
3 > 5 && 4 < 100 => 앞이 거짓이므로 뒤에는 계산 안 하고 넘어감
- || 연산자 (true || = true)
3 < 5 || 4 < 100 => 앞이 참이므로 뒤에는 계산 안 하고 넘어감
기능, 항 개수에 따른 연산자
- 기능 : 산술 연산자, 비교 연산자, 논리 연산자, 시프트 연산자
- 항 개수
- 단항 연산자 : !(부정 연산자), ++, --(증감 연산자), +, -(부호 연산자)
- 이항 연산자 : 산술 연산자, 비교 연산자, 논리 연산자
- 삼항 연산자 : 기호 => 항 1? 항 2 : 항 3
사용법 : 항 1? 항 2 : 항 3 => 항 1에는 조건문이 들어옴
결과 : 항 1이 참이면 결과는 항 2, 거짓이면 결과는 항 3