▶ 3주차 기본 미션
혼공 용어 노트에 용어 추가 등 노트 활용하고 공유하기


▶ 3주차 선택 미션
p. 512 문제 8번 풀고 풀이 과정 설명하기
- IntegerCompareExample.java
package sec01.verify.exam08;
public class IntegerCompareExample {
public static void main(String[] args) {
Integer obj1 = 100;
Integer obj2 = 100;
Integer obj3 = 300;
Integer obj4 = 300;
System.out.println( obj1 == obj2 );
System.out.println( obj3 == obj4 );
}
}
- 실행 결과
true
false
- 풀이 과정
타입 | 값의 범위 |
boolean | true, false |
char | \u0000 ~ \u007f |
byte, short, int | -128 ~ 127 |
Wrapper 객체에 대해 ==와 != 연산자는 내부의 값을 비교하는 것이 아니라 Wrapper 객체의 참조를 비교한다. 박싱된 값이 표에 나와 있는 범위 안에 포함된다면 ==와 != 연산자로 내부의 값을 바로 비교할 수 있지만, 그 이외의 경우에는 언박싱한 값을 얻어 비교해야 한다.
따라서 100은 int 타입의 범위 안에 포함되므로 내부의 값을 비교할 수 있어 obj1 == obj2의 결과가 true이다.
하지만, 300은 범위에 포함되지 않으므로 obj3와 obj4의 참조를 비교하여 결과를 도출한다. 두 객체의 주소는 다르기 때문에 결과는 false이다. Wrapper 객체를 비교할 때는 직접 내부 값을 언박싱해서 비교하거나, equals() 메소드로 내부 값을 비교하는 것을 권장한다.
'혼공자' 카테고리의 다른 글
[혼공단 7기] 혼자 공부하는 자바 6주차 (0) | 2022.02.28 |
---|---|
[혼공단 7기] 혼자 공부하는 자바 5주차 (0) | 2022.02.20 |
[혼공단 7기] 혼자 공부하는 자바 4주차 (0) | 2022.02.13 |
[혼공단 7기] 혼자 공부하는 자바 2주차 (0) | 2022.01.23 |
[혼공단 7기] 혼자 공부하는 자바 1주차 (0) | 2022.01.16 |