반응형
== 과 equals는
두 주소값이 같은지 확인하는 메서드이다. 단, String 클래스에서 eqauls()를 재정의(오버라이딩ㅠ ) 하였기 때문에 String 타입이라면 값을 비교한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package self_Am;
public class ObjectClass {
public static void main(String[] args) {
String data1 = new String("ABC");
String data2 = new String("ABC");
String data3 = "ABC";
String data4 = "ABC";
System.out.println(data1 == data2);
System.out.println(data1.equals(data2));
System.out.println(data1.equals(data3));
System.out.println(data3.equals(data4));
System.out.println(data3 == data4);
System.out.println(data1 == data4);
}
}
|
cs |
결과
false
true
true
true
true
false
data1 == data2 ;는 A ,B의 값을 비교하는게 아닌 주소를 비교하는 것이다.
data1.equals(data2) 또한 ObjectClass 에서는 주소를 비교한다. 하지만 A,B가 String 일 경우에는
재정의가 되어 재정의된 값을 비교한다.
이러하기 때문에 String 을 비교할때에는 equals를 써주는게 좋다.
추가적으로 ==에서 값을 비교하기 위해서는 A 뒤에 .intern을 사용하면
같은 값을 가지고 있는 B를 찾아가 주소를 리턴해주기때문에 true가 된다.
(단, intern이 가능한건 data 3,4의 경우이다. new 를 사용하여 객체를 만들면 불가능하다. )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package self_Am;
public class ObjectClass {
public static void main(String[] args) {
String data1 = new String("ABC");
String data2 = new String("ABC");
String data3 = "ABC";
String data4 = "ABC";
System.out.println(data3== data4);
System.out.println(data3.intern() == data4);
}
}
|
cs |
결과
true
true
data3과 4는 같은 주소값을 가지고 있다.
(intern추가 예시)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package self_Am;
public class ObjectClass {
public static void main(String[] args) {
String data1 = new String("ABC");
String data2 = new String("ABC");
String data3 = "ABC";
String data4 = "ABC";
System.out.println(data3== data4);
System.out.println(data3.intern() == data1);
System.out.println(data1.intern() == data3);
System.out.println(data1.intern() == data2.intern());
System.out.println(data3.intern() == data4);
//intern()
//constant pool 에 같은 값을 검색하여 그 주소값을 반환해 준다.
}
}
|
cs |
결과
true
false
true
true
true
반응형
'JAVA' 카테고리의 다른 글
자바/ wrapper Class (0) | 2020.09.04 |
---|---|
java/ to String 주소값 출력 값 출력으로 오버라이드 하기 (0) | 2020.09.03 |
상속시 호출순서에 따른 실행결과 변화 (0) | 2020.08.30 |
자바/상속 클래스들의 호출 순서 (0) | 2020.08.30 |
상속 /다형성 /메소드 오버라이드 (0) | 2020.08.28 |