java의 equals와 ==의 비교 예시
package com.amos;
/**
* @ClassName: EqualTest
* @Description:Java equal ==
* @author: amosli
*/
public class EqualTest {
public static void main(String[] args) {
int a = 1;
float b = 1.0f;
System.out.println(a == b);// true
String c = new String("hi_amos");
String d = new String("hi_amos");
System.out.println(c == d);// false
System.out.println(c.equals(d));// true
}
}
자바에서 두 변수가 같은지 아닌지를 판단하는 데는 주로 두 가지 판정 방식이 있다. 하나는 == 연산자를 이용하는 것이고, 다른 하나는 equals 방법을 이용하여 양자가 같은지 아닌지를 판단하는 것이다.1).= = = 를 사용하여 두 변수가 같은지 여부를 판단할 때 두 변수가 기본 형식 변수이고 모두 수치 형식이라면 데이터 형식이 엄격하게 같을 것을 요구하지 않고 두 변수의 값이 같으면true로 되돌아옵니다.
2).두 인용 형식 변수에 대해 하나의 대상을 가리켜야 할 때 == 판단이true.==유형상 부자 관계가 없는 두 객체를 비교할 수 없습니다.
위에서 같은 new String을 설명할 수 있을 때, == 둘이 같은지 아닌지를 판단하는 것은false이고, equals는true이다.
equals 방법이 겨냥한 String 클래스는 원본 코드를 보면 사실 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 방법은 사실상 처음부터 == 판별식을 호출한 다음에 그 진일보한 값이 정확한지 판단한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.