티스토리 뷰
오늘은 필자의 이전 포스팅에서
설명하기로 했던 equals와 ==의 차이에 대한
포스팅을 진행하겠다.
('이전 포스팅' 클릭)
이전 포스팅에서도 말했지만
👉 equals와 ==의 차이점을 소개하자면
equals의 경우 메서드이기 때문에
()안의 내용을 비교한다.
📌
즉 두 대상의 값 자체를 비교한다!
==의 경우 객체의 주소를 비교한다.
기본 타입 int형, char형 등은 대상에 주소값을 가지지 않고 쓰이기 때문에
==(동등비교)가 가능하지만
String은 클래스 이기 때문에
생성할 때마다 새로운 주소값이 부여된다.
📌
그래서 String 타입의 경우 '값' 자체는
같아도 '주소'는 다르다!!
말만 들어선 이해가 어려울 수 있으니
직접 코드를 통해 확인해보자!!
🤔❓
우선 필자가 위에서 설명한 것을 바탕으로
다음 코드의 실행결과를 예측해보라.
public class Test {
public static void main(String[] args) {
int a = 50;
int b = 50;
System.out.println(a==b);
System.out.println(a.equals(b));
String StringA = "Hello";
String StringB = "Hello";
String StringC = new String("Hello");
System.out.println(StringA==StringB);
System.out.println(StringA==StringC);
System.out.println(StringA.equals(StringB));
System.out.println(StringA.equals(StringC));
}
}
자 이제 실행 결과를 보자.
보다 싶이 a.equals(b)의 경우 에러가 난다.
에러가 나는 이유는 필자가 주석으로 설명해두었으니 참고하길 바란다.
그럼 에러가 나는 저 문장을 제외하고
남은 문장의 실행결과를 눈으로 확인하자.
✔
위에서 설명한대로
int는 Call By Value
즉, 대상에 주소값을 가지지 않고
값을 할당받는 형태로 사용하기 때문에
a==b는 true를 가진다.
StringA==StringB
의 경우 같은 객체이기 때문에
true가 나오고
StringA==StringC
의 경우 위에서 말했던대로
new 연산자를 사용하여 새 객체를 생성하였으므로
객체의 주소가 달라서 false를 가진다.
StringA.equals(StringB)의 경우
'값'비교이기 때문에
true가 나온다.
StringA.equals(StringC) 또한
'값'비교이므로
true가 나온다!
문제를 보다 이해가 안되거나 설명이 이상한 부분이 있으면 댓글을 활용해주길 바란다.
참고
'프로그래밍 > 자바' 카테고리의 다른 글
[자바의 정석] Ch 6-14 메서드란? Ch 6-20 return문이란? Ch 6-22 호출 스택(call stack)이란? Ch 6-23 기본형 매개변수란? Ch 6-24 참조형 매개변수란? Ch 6-25 참조형 반환타입이란? (0) | 2022.06.20 |
---|---|
[자바의 정석] Ch 6-6 객체의 생성과 사용, Ch 6-8 객체 배열, Ch 6-9 클래스의 정의(1), Ch 6-11 선언위치에 따른 변수의 종류, Ch 6-12 클래스 변수와 인스턴스 변수 (0) | 2022.06.20 |
[자바의 정석] Ch 6-2 클래스와 객체란? (0) | 2022.06.20 |
[자바의 정석] Ch 6-1 객체지향 언어란? (0) | 2022.06.20 |
[JAVA] DTO와 VO 의 차이 (0) | 2022.04.06 |
- Total
- Today
- Yesterday
- 자바의 정석
- 해커랭크
- ORM
- queue
- 22 정보처리 산업기사
- 챌린지
- 자바
- 해커랭크 자바
- stack
- 해커랭크 챌린지
- 그리디
- hackerrank challenges
- challenges
- JPA
- LinkedList
- hackerrank
- 코드
- BAEKJOON
- 디버깅
- 소스코드
- 풀이
- 백준
- 해커랭크 자바 챌린지
- Java
- 개발자
- 22 정보처리산업기사
- 강의
- 정보처리산업기사
- 정보처리산업기사 공부법
- 정보처리 산업기사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |