2015-01-16 4 views
-2
public class SubString1 
{ 
public static void main(String[] args) 
{ 
String s="Sachin"; 
String sb=s+"Tendulkar"; 
String sbc="SachinTendulkar"; 
System.out.println(sb==sbc); 
} 
} 

출력 : 거짓.문자열 개체가 문자열 리터럴 변수와 문자열을 연결하여 만들어지는 경우?

출력이 어떻게 잘못 되었습니까?

이 유형의 객체 생성의 논리를 이해할 수 없었습니다. 나에 따르면 둘 다 동일한 인스턴스를 참조해야하며 답변은 사실이어야합니다. 설명해주세요.

+0

개체 메모리를 어떻게 이해합니까? – Loc

+1

어쩌면 [this] (http://stackoverflow.com/questions/15427599/a-confusion-about-java-string-literal-pool-and-strings-concatenation)가 더 나은 복제본 일 수 있습니다. –

+0

'final String s = "Sachin"이라고 말하면 결과는'true'가됩니다. 그러나 여전히 문자열을 비교하기 위해'=='를 사용해서는 안됩니다. – ajb

답변

0

서로 다른 개체 참조입니다. Java의 문자열은 변경할 수 없습니다.

문자열의 실제 내용을 비교하려면 .equals 메서드를 사용하십시오.

+0

나는 그것의 논리를 이해하고 싶다. 문자열이 equals() 메서드와 비교되어야한다는 데 동의합니다. –

+0

제발 논리를 설명해주세요, 어떻게 자바에서 일어난 일입니까 ??? –

+0

@Randhishkumar 논리는 코드가 사용자가 보는 것처럼 정확하게 실행된다는 것입니다. 'sb'가 == 연산자와 비교 될 때 마술처럼 'sbc'와 같은 결과를 초래하는 신비로운 메커니즘이 없습니다. 그것이 있다고 생각한다면, 그것이 무엇이라고 생각하는지 말해주십시오. 이것은 면접자가 훌륭한 능력이나 진실 된 관심을 보이지 않는 면접 시험 문제입니다. – EJP