2017-02-18 4 views
-1

나는 상수 값이 먼저 사용 된 다음 변수가 예를 들어 ("ram")과 같음을 보았다. (a) 그리고 많은 곳에서 변수가 처음 사용 된 다음 상수 비교하고자하는 값입니다 (예 : a.equals ("ram")).변수를 먼저 사용할 때와 개체를 비교할 때 끝에 변수를 사용하는 것의 차이점은 무엇입니까?

a.equals ("ram")과 ("ram"). equals (a)의 차이점은 무엇입니까? 어느 것을 사용하는 것이 더 낫고 그 이유는 무엇입니까?

+0

''ram ".equals (a)'(괄호가있는 이유는 확실하지 않습니다)는 NPE를 던지지 않을 것이기 때문에"더 좋습니다 "는'a'가'null'입니다. –

+0

이 질문에 계속해서 질문했습니다 (예 : [here] (http://stackoverflow.com/questions/5712100/interview-java-equals)). 먼저 조사하십시오. – Seelenvirtuose

+0

a.equals ("ram")는 NullPointerException을 throw 할 수 있습니다. –

답변

0

("램"). (a)가 더 좋습니다. a가 null 인 경우에서도, 코드는 결코 깨지지 않습니다. null 포인터 예외에서 우리를 절약 할 수 있습니다.

+3

그러나 a가 null이 아니면 예외가 발생하지 않도록 숨 깁니다. –

+1

또한 읽기가 부 자연스럽게 발생하여 유지 관리가 어려워집니다. 'null'확인을 피하는 것이 더 낫다는 전제는 분명히 사실이 아니며, 여기에 응답자는 왜 공학적 이유가 잘못되었는지를 설명했습니다. 그렇지 않으면 뒤쪽 관용구를지지하는 주장은 논리가 아닌 감정에 근거한다. 나는이 논평에서 두 가지 형태 중 하나를지지하지 않을 것이며, 우리가 논리에 대한 우리의 결정을 근거로한다고 주장한다. –

3

변수 anull이 될 수있는 경우 첫 번째 스타일은 null 검사를 건너 뛸 수 있기 때문에 더 안전합니다.

당신이

if (a.equals("ram")) { ... } 

를 쓸 때 당신이 a가 널 포인터 예외를 피하지 null 있는지 확인해야합니다. 비 - 널 기준값 x 들어

x.equals(null)false를 반환한다 : equals() 메소드가 예외를 발생하지 않고 null 인자를 처리 할 필요가 있기 때문에

if ("ram".equals(a)) { ... } 

필요하지 않다.