String Equals Method
문자열을 비교할 때에는 equals equals == 대신 실제 equals 메서드를 사용해야된다.
(리터럴 일 경우) == 가 문제 없는 결과를 출력할 수도 있지만,
사실 문자열을 비교할 때 사용하는 적절한 메서드는 equals 임.
public class APp {
public static void main(String[] args) {
String text1 = "orange";
String text2 = "apple";
String text3 = "apple";
System.out.println(text1 == text2);
System.out.println(text2 == text3);
//아래 코드와 기능이 똑같다?
System.out.println(text1.equals(text2));
System.out.println(text2.equals(text3));
}
}
text1, text2, text3을 구분하는데
== 와
equals 메서드를 사용했다.
System.out.println(text1.equals(text2));
여기서 text1이, text2 에게 euquals의 메서드를 시키는 것이라고 한다.
메서드는 그럼 동사라고 이해하면 되나...? ㅎ

늘 그렇듯 초보자 선에서 배우는 내용들은 다른점을 전혀 구분할수도 없고, 그 예제들 또한 매우 단순하여 직접 작성할 때 구분할 필요성에 대해 잘 이해하지 못한다. (이 경우에도, 문자열이 리터럴일 경우에는 == 를 사용할 수 있다고 하지만, 리터럴이 무슨말인지 모르겠는 나는 보초 ^^)
그래서 오늘도 열일하는 챗지피티씨에게... 물어봤다.
이거 기본 예제 말고 그래도 다른점을 볼 수 있게 코드 한번 짜줘 한번 따라 써볼게.
public class Practice_01 {
public static void main(String[] args) {
String literal1 = "banana";
String literal2 = "banana";
String object1 = new String("banana");
String object2 = new String("banana");
System.out.println("----비교체험 극과극----");
System.out.println("literal1 == literal2 : " + (literal1 == literal2));
System.out.println("literal1 == object2 : " + (literal1 == object1));
System.out.println("object1 == object2 : " + (object1 == object2));
System.out.println("\nequals() 비교");
System.out.println("literal1.equals(literal2): " + literal1.equals(literal2));
System.out.println("literal1.equals(object2): " + literal1.equals(object2));
System.out.println("object1.equals(object2): "+ object1.equals(object2));
}
}
간단해보여도 챗지피티가 짜준건 정말 최고다. 쓰다보면 어떻게 다른지 대번에 보이거나 아니면 최소한 유추할 수 있다.
생큐 ai... 생큐 생큐...

동일한 내용인데도 값이 다르게 나온다.
literal은 ==과 "큰 따옴표"를 써서 직접적으로 assign 한 값이다.
이런 literal은 String Pool에 저장된다. 그래서 한 번 쓴 애는 String Pool 에서 꺼내오면 되므로 두번 쓰지 않는다.
즉, 아래의 두개 바나나는 literal1과 literal2에 assign 되었지만 결국 갸는 갸라는 의미
String literal1 = "banana";
String literal2 = "banana";
하지만 아래에 쓰인 바나나들은 다르다.
literal 하게 저장된게 아니라, new 라는 키워드로 생성되는 객체 라고 한다. 그래서 String Pool에 저장되는것이 아니라 Heap 에 저장된다고.
new 라는 키워드로 생성할 때 마다 새로운 객체로 구분된다. 그래서 저 banana와 이 banana는 서로 다른 바나나다. 동명이인이라고 보면 되지 않을까?
String object1 = new String("banana");
String object2 = new String("banana");
여튼 오늘도 챗지피티씨의 도움을 받아 잘 공부한 것 같다..
코드 공부하는거 재밌기는 한데, 너무 집중도가 떨어진다.
어떻게 좀 딱 잡고 할 수는 없을까.. (지금 발등에 불 떨어진 1인 😂😂😂😂)
뭐가됐든일단... 해피코딩 ^^
'콤퓨타 > Programming) 왕초보 자바' 카테고리의 다른 글
| 23. (Loops and Conditions) Break (3) | 2025.08.10 |
|---|---|
| 22. (Loops and Conditions) The Final Keyword (1) | 2025.08.10 |
| 20. (Loops and Conditions) Switch Fallthrough (5) | 2025.08.09 |
| 19. (Loops and Conditions) Switch (9) | 2025.08.09 |
| 18. (Loops and Conditions) One Line If (3) | 2025.08.09 |