equals() 메서드
Object 클래스의 메서드. 이는 == 연산자와 동일하게 주소값을 비교를 수행하는 메서드이다. 문자열 비교를 위해 사용하는 equals()의 경우 String 클래스에서 오버라이딩을 함으로써 문자열 간의 비교가 가능하다
== 연산자
== 연산자의 경우 객체의 주소값을 비교합니다. 그래서 비교하는 객체가 동일한 객체인지를 판별한다.윈시타입(실제 데이터 값이 저장된 경우)의 객체에 대해서는 값 비교가 가능하고, 참조타입(객체의 주소값을 참조하는 경우)에 대해서는 주소 비교를 수행한다
예시 문제
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ s1, s2의 길이 ≤ 100
1 ≤ s1, s2의 원소의 길이 ≤ 10
s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력
s1 s2 result
["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0
정답
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i=0;i<s1.length;i++){
for(int j=0;j<s2.length;j++){
if(s1[i].equals(s2[j])){
answer++;
}}}
return answer;
}}
== 연산자를 사용시 틀린 이유
if(s1[i] == s2[j]){
answer++;
}
s1[i] 객체의 주소값과 s2[j] 객체의 주소값을 비교하게 되므로 == 연산자 사용시 false가 나오게 된다
따라서 answer의 값이 0에서 오르지 않으므로 answer은 계속 0이 출력된다
'JAVA > 개념' 카테고리의 다른 글
JAVA :: StringBuilder 사용법과 주요 메소드 (0) | 2024.04.02 |
---|---|
JAVA :: replace(), replaceAll() 자바 정규식 (0) | 2024.03.29 |
JAVA :: 추상클래스, 추상메서드 (0) | 2024.03.29 |
JAVA :: 부모클래스와 자식클래스 멤버가 동일한 경우의 상속 (0) | 2024.03.28 |
JAVA :: @Override 오버라이드(오버라이딩), 상속의 다형성 (0) | 2024.03.28 |