ringa_lee2017-04-18 10:48:45
으아악
여기서 a와 "abc"는 두 개의 개체입니다. 인턴 메서드가 호출되면 문자 상수 풀에 이미 이 개체와 동일한 문자열이 포함되어 있으므로 뒤에 b="가 있어도 인턴 메서드 호출은 쓸모가 없습니다. abc", b와 a는 동일한 객체가 아닙니다.
출력을 동일하게 하려면 첫 번째 문장은 다음과 같습니다.
으아악두 번째 문장은 다음과 같습니다.
으아악PHP中文网2017-04-18 10:48:45
가장 먼저 알아야 할 것은 == 연산은 두 객체 또는 기본 유형 a와 b가 동일한 메모리 영역을 가리키는지 여부를 결정한다는 것입니다
String의 기본 구현은
private final value[]
입니다. String이 인스턴스화되면 실제로 System.arraycopy를 통해 char 배열을 저장하기 위해 연속 메모리를 나눕니다.
new String("abc")은 실제로 이러한 방식으로 String을 초기화하는 것이 권장되지 않습니다. 실제 구현에는 a = "abc"보다 한 단계 더 필요합니다.
로 쓸 수 있습니다. 으아악
실제 연산은 위의 세 번째 단계, 즉 b = a;String b = "abc"의 실제 기본 구현은 다음과 같습니다.
문자열 소스코드 분석을 살펴보는 것을 추천합니다
[JAVA 소스코드 분석 - Java.lang] 문자열 소스코드 분석