2016-06-24 3 views
-1
public class HelloWorld{ 

    public static void main(String []args){ 
     String a= "hello"; 
     String ab= a +"John"; 
     String abc = "helloJohn"; 
     System.out.println(ab==abc); 

    } 
} 

그것은 거짓ab==abc를 인쇄합니다. 사실이 아니야 .. ??자바 문자열 풀 저장 오류

+1

는 ==와 동일한 방법에 대해 더 연구 할 필요가있다. –

+0

질문을 게시하기 전에 새로운 사람들이 google해야합니다. –

+1

나는 그의 주장이 가치를 비교하지 않는다고 생각한다. 그는 왜'abc'가'ab'와 같은 참조가 아닌지 묻는다. 답변을 게시 할 수 없으므로 여기에서 설명 할 것입니다 : String은 불변이므로, 두 개의 문자열을 연결하기 위해'+ '연산자를 사용하면 새로운 String이 생성됩니다. 그것이 참조를 비교하는 것은'=='를 사용하여'false'를 반환하는 이유입니다. – eol

답변

0

당신은 Stringequals/equalsIgnoreCase 사용한다. '=='은 개체를 비교합니다. 값이이 아닙니다. 왜냐하면 String a = "aa"을 만들면 새로운 객체를 생성한다는 의미입니다 (예 : new String("aa")). 자바에서는 equals()과 hashCode() 메쏘드가 Object 클래스로부터 계승되었지만, 당신은 그것을 오버라이드 할 수 있습니다.

0

yourStringVar.equals(anotherString)을 사용하여 동일한 문자 시퀀스가 ​​포함되어 있는지 확인하고 ==을 사용하여 동일한 개체를 참조하는지 확인하십시오.

0

java에서는 String이 하나의 객체이므로 동일한 내용을 가진 두 개의 String 객체는 서로 다른 객체이므로 같지 않습니다. 따라서 abc == ab가 참이 아닙니다. 그러나 String 객체의 내용을 비교하는 메소드가 있습니다. 이들은 :

abc.equals(ab) 

또는

abc.compareTo(ab) == 0