메모리 할당
답변
두 변수는 각각 참조로 필요한만큼의 공간을 차지합니다.
문자열 리터럴의 인턴드로 인해 두 참조가 모두 동일한 값을 갖습니다. 즉, 동일한 객체를 참조합니다. 즉, String 객체는 하나뿐입니다. 그러나이 코드를 여러 번 실행하면 (동일한 클래스 로더 내에서) 적어도 x
및 y
의 값은 항상 동일한 단일 객체를 참조합니다.
두 변수
물론, 여전히 독립적 - 당신이 다른 변경하지 않고 하나를 변경할 수 있습니다 : 문자열 리터럴 풀에 배치 할 단 하나의 문자열이String x = "abc";
String y = "abc";
x = "def";
System.out.println(y); // Still prints abc
모든 문자열 "수정"의 경우와 같이 변수 중 하나를 변경하면 새 Object가 만들어 지도록 추가해야합니다. – Argote
@Argote, "할당하는 것은 새 Object를 만듭니다"는 말은 정확하지 않습니다. 이러한 참조 중 하나에 기존 문자열을 할당하면이 참조가 변경되지만 새로운 객체는 분명히 만들어지지 않습니다. –
@Argote : 세르게이 맞습니다. 새 객체를 만드는 것은 * assignment *가 아닙니다. –
. 루프에서이 두 줄을 몇 번 실행하더라도 더 이상 객체가 할당되지 않습니다.
편집 : 더 많은 개체를 만들려면이 작업을 수행 할 수 있습니다.
String x = new String("abc"); // don't do this
String y = new String("xyz"); // don't do this either.
이렇게하면 사용자가 말했기 때문에 항상 개체가 생성됩니다. ;)
String x 값 "abc"를 "xyz"로 변경하면 새로운 할당이 생성됩니까? –
클래스를로드 할 때 두 개의 String 리터럴이 작성되지만 더 이상 오브젝트를 할당하지 않습니다. –
@kiran, 네, 그렇다면 문자열 리터럴 "xyz"에 대해 하나의 객체와 동일한 내용을 갖고 있지만 다른 메모리 영역을 차지하는 두 개의 문자열 x와 y의 세 객체를 갖게됩니다. 그러나 그렇게하는 것은 이치에 맞지 않습니다. –
여기에 Java의 문자열 리터럴에 관한 nice reference이 있습니다. 난 당신이 인용에 관심이있는 것 같아요 :
동일한 데이터 를 가진
String
객체는 명시 적으로intern()
를 사용하여 일정한 식, 리터럴 문자열, 기존의 문자열에 참조, 또는 에 의해를 사용하여 생성하는 경우 방법, 참조가 동일합니다.
문자열 x = "abc"; 그것은 하나의 문자열 객체와 하나의 참조 변수를 생성 할 것입니다. "abc"가 풀로 들어가고 x가 그것을 참조합니다.
- 1. 메모리 할당
- 2. 메모리 할당
- 3. 메모리 누출의 C/메모리 할당 ++
- 4. 스레드 당 메모리 할당
- 5. 디스플레이 할당 메모리
- 6. std :: map의 메모리 할당
- 7. TimerCallback.PerformTimerCallback 메모리 할당
- 8. C에서의 메모리 할당
- 9. 동적 메모리 할당 교재?
- 10. 어셈블리 런타임 메모리 할당
- 11. c 메모리 할당
- 12. Silverlight 메모리 할당
- 13. Java에서 메모리 할당
- 14. 이중 포인트 메모리 할당
- 15. 어셈블리 메모리 할당
- 16. 메모리 구조에 할당
- 17. 문자열 메모리 할당
- 18. 포인터 메모리 할당 문제
- 19. 동적 메모리 할당
- 20. 변수 메모리 할당
- 21. 템플릿 및 메모리 할당
- 22. 동적 GPU의 메모리 할당
- 23. 메모리 할당 및 해제
- 24. Alligned 메모리 할당
- 25. Android 위젯의 메모리 할당
- 26. 상수 메모리 할당
- 27. 글로벌 구조의 메모리 할당
- 28. iPhone 메모리 할당 문제
- 29. Windows 메모리 할당 질문
- 30. 맞춤 메모리 할당
"메모리 할당이란 무엇입니까?" 또한,이 숙제는 무엇입니까? 당신은 일련의 아이폰 관련 질문을하고 있었으므로 자바 질문을 청중에게 보여주는 것이 놀랍습니다. – BoltClock
"메모리 할당"이란 정확히 무엇을 의미합니까? – Argote
OP가 문자열 "abc"가 인턴 될 것인가를 묻고 있다고 생각합니다. – Juliet