목록이것이 자바다/03 연산자 (9)
충분히 쌓여가는
연산자 연산 방향 우선순위 증감(++, --) 부호(+, -) 비트(~), 논리(!) 산술(+, -) ---------------------------------------> 쉬프트(, >>>) ---------------------------------------> 비교(, =, instanceof ---------------------------------------> 비교(==, !=) ---------------------------------------> 논리(&) ---------------------------------------> 논리(^) ---------------------------------------> 논리(|) ------------------------------------..
&&과 &의 산출 결과는 같지만 연산 과정이 조금 다른다 &&는 앞의 피연산자가 false라면 뒤의 피연산자를 평가하지 않고 바로 false를 산출 &는 두 피연산자 모두를 평가해서 산출 결과를 나타낸다 따라서 &보다 &&가 더 효율적으로 동작한다 ||는 앞의 피연산자가 true라면 뒤의 피연산자를 평가하지 않고 바로 true를 산출 |는 두 피연산자 모두 평가해서 산출 package ch03.sec07; public class LogicalOperatorExample { public static void main(String[] args) { int charCode = 'A'; // int charCode = 'a'; if( (65
0.1f == 0.1에서 0.1f가 double 타입으로 변환되면 0.1 == 0.1이 될거 같지만 되지않고 false가 나온다 부동 소수점 방식을 사용하는 실수 타입은 0.1을 정확히 표현할 수 없고 float 타입과 double 타입의 정밀도 차이가 있다 해결책으로 float 타입으로 강제 타입 변환 후 비교 연산을 수행하면 된다 0.1f == (float) 0.1 // true
나눗셈(/) 또는 나머지(%) 연산에서 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생한다 무한대의 값을 정수로 표현할 수 없기 때문 int x = 5; int y = 0; int result = 5 / 0; //예외 발생 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN(Not a Number)이 된다 5 / 0.0 -> Infinity 5 % 0.0 -> NaN 문제점은 Infinity 또는 NaN 상태에서 계속해서 연산을 하면 안된다 어떤 연산을 하더라도 결과는 계속해서 Infinity와 NaN이 되므로 데이터가 엉망이 될 수 있다 Infinity + 2 ..