연산 시 자동 타입변환 예시: 먼저 int로 변환된다.
정확한 소숫점 계산
- 정수로 바꿔 계산한다!
숫자를 0으로 나눈 경우
- 실수타입이면 Infinity, NaN 나올 수 있음
부동소수점 표현방식에서 0을 정확히 표현할 수 없기 때문 - 정수타입이면 예외(Exception) 발생함
- Double.isInfinite, Double.isNaN, Double.isFinite 으로 검사가능함
비교연산
숫자 비교
- 피연산자의 타입이 다른 경우 연산 전 타입변환으로 타입을 일치시킨다
- 예외) double과 float끼리 비교하는 경우 타입 변환이 되지 않음
문자열 비교
- ==: 주소 값 비교
- String.equals(): 실제 값 비교
왜 str1과 str2의 주소값이 같아지는가?
- 기본타입: 변수에 실제값 저장
- 참조타입: 주소값(포인터)저장
- String s = “홍길동”;
String은 new 사용하지 않고도 저장 가능함. - new 사용하지 않으면 객체를 새로 생성 하지 않을 수도 있다.
- 같은 값을 new를 사용하지 않고 String에 저장할 경우 객체를 새로 생성하지 않고 주소만 복사해 저장한다.