Equals
Object 류 의 equals 방법 은 대상 상의 차이 가능성 이 가장 큰 동일 관 계 를 실현 합 니 다.즉,비어 있 지 않 은 인용 값 x 와 y 에 대해 x 와 y 가 같은 대상 을 인용 할 때 만 이 방법 은 true(x==y 가 값 true)로 돌아 갑 니 다.
여기 서 내 가 말 하고 자 하 는 것 은 우리 프로그램 에서 오류 가 발생 하 는 경우 가 많다 는 것 이다.바로 이 equals 방법 이 던 진 빈 포인터 이상 이다.
예 를 들 면:
if(dis.readLine().equals("asdasdasd")){
...
}
우 리 는 일반적으로 이렇게 쓰 여 있 지만 이렇게 쓰 는 것 을 모른다.만약 에 dis 가 빈 메 시 지 를 읽 거나 다른 이상 으로 인해 dis 가 데 이 터 를 전혀 읽 지 못 하면 이 if 는 빈 지침 이상 을 던 질 것 이다.
일반적으로 우 리 는 알 수 없 는 String 에 대해 상수 와 비교 할 때 가장 좋다.
if("asdasdasd".equals(dis.readLine())){
...
}
이것 도 우리 가 일치 하 는 것 이 비어 있 는 것 입 니까?
if("".equals(dis.readLine()) || null ==dis.readLine()){
...
}
String 의 equals 방법의 소스 코드 를 다시 한 번 볼 게 요.
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
한 가지 더 말씀 드 리 겠 습 니 다.
byte[]비 교 는 요?
String[] a = new String[]{"1","2"};
String[] b = new String[]{"1","2"};
if(a.equals(b)){
...
}
}
이러 면 안 돼.왜?equals 소스 보기
public boolean equals(Object obj) {
return (this == obj);
}
그것 은 두 Object 가 비교 하고 있 는 것 으로'=='을 사용 하고 비교 하 는 두 대상 의 주소 로 분명히 안 된다.
그래서 비교 할 때 반드시 빈 것 으로 고려 해 야 한다.equals 와 도대체 비교 하 는 것 이 무엇 인지.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.