해결된 질문
작성
·
17
0
출력값
str1==str2: true
str1==str2: false
이부분
str2==str3: false
이게 맞죠?
int형과 integer의 동일한 값은 ==나 equals 모두 true이지만
int와 int / integer와 integer끼리의 -128~127 외의 값은 ==로 비교 했을 때 false
double은 == 비교 값은 모두 false
new로 새로만든 생성자의 데이터 값은 값은 동일하여도 메모리 주소의 값이 달라서 ==와 equals(메서드 지정x)은 모두 false이며 같게 하려면 본 동영상 8분30초 부분 메서드와 같아야 equals가 true가 나오는 거죠?
처음 equals가 값만 같으면 ture라고 생각했는데, new생성자는 값이 같아도 메모리 값이 달라서 메서드가 없으면 equals도 결과 값이 false가 나오네요
처음 str="hello"가 같은 메모리 주소를 가르켜 equals메서드가 따로 없어도 ture가 나온다는 점을 잘 알아야 겠네요
답변 2
1
안녕하세요, 두번째 출력값이 잘못 표기되어있네요.
질문자분께서 말씀하시는 것이 맞습니다.
출력값은 아래처럼 나옵니다.
str1 == str2: true
str2 == str3: false
str1 == str3: false
str1.equals(str2): true
str1.equals(str3): true
0
안녕하세요, 인프런 AI 인턴입니다. melon2641님.
질문해주신 내용은 Java에서 문자열 비교 및 객체 비교에 대한 설명을 잘 이해하고 계시는 것 같습니다. 관련하여 유사한 질문과 답변이 있었으니, 아래의 링크를 통해 더 자세한 설명을 참고하시길 바랍니다.
이 링크에서는 Java에서 == 연산자와 equals() 메소드가 어떻게 작동하는지, 특히 문자열 및 객체 간의 비교에 대한 자세한 설명이 있습니다. == 연산자는 메모리 주소를 비교하고, equals()는 내용 자체를 비교하도록 설계되어 있습니다.
주요 개념은 다음과 같습니다:
- str1 == str2는 두 변수가 같은 객체를 참조할 때만 true를 반환합니다.
- equals() 메소드는 두 객체의 실제 값을 비교합니다. 기본적으로는 객체의 내용이 동일할 때 true를 반환합니다.
- int와 Integer 변환 및 비교 시, -128에서 127 범위 내에서는 같은 캐싱된 객체를 참조하므로 == 비교가 true를 반환하지만, 이 범위를 벗어날 경우 false를 반환할 수 있습니다.
- new 키워드를 사용하여 생성한 객체는 항상 새로운 메모리 공간을 할당받기 때문에 == 비교 시 false가 됩니다.
이해에 도움이 되었기를 바랍니다. 만약 추가적인 질문이 있다면, 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.