서론 및 문제
이번 포스팅에서는 JAVA equal과 == 차이를 알아보도록 하겠다. 이전 자바 기출 포스팅을 가려면 여기로 가면 된다. 이미 문제를 보면 느낌이 오겠지만, 그래도 다시 풀어보면서 기억에 집어넣도록 하자. 문제는 아래 코드의 출력을 적어보자.
public class ArrayComparison {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3, 4};
int[] b = new int[]{1, 2, 3, 4};
if (a == b) {
System.out.print("a and b are equal.");
} else {
System.out.println("a and b are not equal.");
}
if (Arrays.equals(a, b)) {
System.out.println("a and b are equal.");
} else {
System.out.println("a and b are not equal.");
}
}
}
문제 풀이
일단 정답은 아래와 같다.
a and b are not equal.
a and b are equal.
처음에 " == 면 맞는 거 아님?" 이라고 생각할 수도 있겠지만, 이건 다른 객체로 태어난 것이기 때문에 두 메모리 주소는 다르다. 그렇기에 new로 선언 된 것은 값을 a.equals(b) 메서드를 사용해야 된다. 이 함수가 내용물이 동일한 지 물어보는 것이기 때문이다. 혹, int a = 19, int b= 19면 if(a==b)가 참으로 나온다(이건 맞음)는 사실에서 "이건 그냥 a= {1, 2, 3, 4}가 아니라 new int[]{1, 2, 3, 4}라 == 메모리 주소 다르게 나온거 잖슴ㅋㅋ" 이라고 생각하는 사람도 있을 거다. 님도 틀렸다. 배열은 생기는 순간 새로운 객체라 new든 아니든 태어날 때 다른 주소를 갖게 태어난다.
'IT, Computer' 카테고리의 다른 글
[정보처리기사] 프로그래밍 언어 기출 풀이 (6) C언어 포인터 문제 (0) | 2025.04.15 |
---|---|
티스토리 hELLO 스킨 적용 방법 (0) | 2025.04.10 |
[정보처리기사] 프로그래밍 언어 문제 풀이 (4) - JAVA 싱글턴 패턴 (0) | 2025.04.09 |
[정보처리기사] 프로그래밍 언어 문제 풀이 (3) - 딕셔너리 (0) | 2025.04.08 |
[정보처리기사] 프로그래밍 언어 문제 풀이 (2) - 정적 변수 (0) | 2025.04.07 |