2013-10-28 2 views
-4

내 프로그램은 다음과 같은 코드를 사용하는 경우문 점점 진정한 가치

String mobile=""; 
if(mobile!="") 
System.out.println("++++++"); 
System.out.println("------"); 

그러나 문은 항상 true로 설정합니다. 어떻게 가능할까요? 조건에 대한 거짓을 얻으려면 코드를 수정하는 방법? 이 널 (null)로 이동 처리 할 수 ​​있기 때문에

+0

어떤 결과가 나옵니까? 거기에 중괄호가 있고, else 절이 필요할 것 같습니다. – user2357112

+0

[이유 doesnt = 문자열에 대한 작업] (http://stackoverflow.com/questions/17443201/why-doesnt-work-on-string/17443215#17443215) –

+0

이 경우 주어진 코드로 두 문자열은 다음과 같습니다. 인턴; 그러나 먼저 equals로 시작한 다음 문제가 지속되면이 수정 된 접근 방식을 사용하여 다른 질문을하십시오. – user2864740

답변

0

if(!(mobile.equals(""))) 

== 및 WHOAMI으로 .equals() 의 차이가이

if(!("".equals(mobile))) 

에 그것의 더 나은 제안했다이 방법을 시도

+4

모바일을 null로 처리 할 수 ​​있으므로 ".equals (mobile)"를 사용하는 것이 좋습니다. – BobTheBuilder

+0

@whoAmI 당신이 제안한대로 대답을 수정했습니다 – SpringLearner

+0

null로 NPE를 사용하지 않으려면'. "(모바일)'사용하는 것이 더 낫습니다. [항상 최선의 생각은 아닙니다.] (http://thecodelesscode.com/case/115) null을 허용하면 응용 프로그램의 더 심각한 문제를 숨길 수 있습니다. –

0

당신은 '수 문자열에 "! ="을 사용하십시오. 이것은 문자열의 참조 만 비교합니다. 사용할 문자열의 내용을 비교하려면 equals

if(!("".equals(mobile))) 
+0

Java에는 포인터가 없습니다. – user2864740

+0

네가 내 친구 야.하지만 반쪽 진실 일 뿐이야. 사용자가 포인터를 사용할 수 없습니다. 그러나 Java는 메모리 할당을위한 포인터를 사용합니다. 내 요점은 있니? – chintan

+0

@chintan 아니요. 아닙니다. JLS는 포인터에 대해 말하지 않습니다. 그리고 포인터가없는 언어로 작성된 Java VM도 있습니다. 따라서 Java *에는 포인터가 없으며 Java/JVM 구현에는 포인터가 필요하지 않습니다. ('NullPointerException'은 단지 레거시 이름이 잘못되었습니다.) – user2864740