equals와 "=="의 차이와 이해

2677 단어 ==equas
equals와 ==의 차이점:
equals는 두 대상의 내용이 같은지 확인하는 데 사용됩니다. (즉, 중의 내용이 같은지 여부)
===기본 데이터 형식을 비교할 때 두 값은 같고 비교 결과는true
비교 인용에 사용할 때 메모리에 있는 같은 대상을 인용하면 비교 결과는true(==비교는 창고의 내용이 같은지)
 
그들의 작업 과정을 더욱 정확하게 이해하기 위해 먼저 equals의 원본 코드를 살펴보자.
 public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

equals에서 기본적으로 '= =' 비교 방법을 사용했고, 매개 변수가String 클래스일 때, 이 방법을 다시 써서 문자를 하나하나 비교하는 것을 볼 수 있다.따라서 equals는 문자열이 같은지 아닌지를 비교할 수 있습니다.
따라서 equals의 구체적인 역할은 현재의 그 종류가 부류 중의 이 방법을 어떻게 재구성하는지에 달려 있다.만약 이 방법을 다시 쓰지 않았다면, 그것은 ==호와 등가였다.
다음은 두 가지 역할을 테스트합니다.
package test;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String str1 = "world";//  , ( ) 
		String str2 = new String("world") ;	//  new ,  
		String str3 = str2 ;	//  ,str  
		System.out.println("str1 == str2 : " + (str1==str2)) ;	
		System.out.println("str1 == str3 : " + (str1==str3)) ;	
		System.out.println("str2 == str3 : " + (str2==str3)) ;	
		System.out.println("======================================================");
		System.out.println("str1 equals str2 : " + (str1.equals(str2))) ;	
		System.out.println("str1 equals str3 : " + (str1.equals(str3))) ;	
		System.out.println("str2 equals str3 : " + (str2.equals(str3))) ;	

	}

}

출력 결과는 다음과 같습니다.
str1==str2:false는 같은 대상이 아닙니다. 주소가 다른str1=====str3:false는 같은 대상이 아닙니다. 주소가 다른str2==str3:true 같은 대상==============================================================str1 elstrue stre2:true strequals truls
equals가 비교 방법을 다시 썼기 때문에 두 문자열의 값이 같은지만 비교합니다.
 String str = "World";에서,str는 창고 메모리에 있고, '월드' 는 더미 메모리에 있으며,str는 '월드' 의 첫 번째 주소를 가리키는 인용입니다.
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기