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는 '월드' 의 첫 번째 주소를 가리키는 인용입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java equals와 =, ==의 차이점 상세 소개1. 기본 데이터 유형, 원본 데이터 유형이라고도 합니다.byte,short,char,int,long,float,double,boolean 2. 복합 데이터 유형(클래스) 그들이 (==) 로 비교할 때, 비교한 것은...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.