2017-01-28 4 views

ответ

5

StringPool является областью, что JVM использует, чтобы избежать избыточной генерации объектов Струнные ..

Те объекты могут быть переработаны, так что вы можете использовать themnot тратить слишком много памяти

Рассмотрим следующий пример:

String s1 = "cat"; 

String s2 = "cat"; 

String s3 = new String("cat"); 

JVM достаточно умна, чтобы видеть, что объект s2 уже находится в памяти, поэтому вместо того, чтобы создать новый объект и тратить, что новое место памяти, то присвоить ссылку на ту же область памяти, выделенной для s1

enter image description here

+1

plus для изображения – KarthzDIGI

3

При использовании String s = "Hello"; Sting s2= "Hello" вы получите такая же копия для обоих s и s2. Однако, когда вы делаете String s = new String("Hello"); String s2 = new String("Hello"), у вас есть разные копии для s и s2 в куче.