Строка ул = новый String ( «а») и струнного ул = «а» Какая разница?

Интервьюер спрашивает

A = String "ABC",
строка B = новый новый String ( "ABC"),
эти два значения, A, B равны, если все идут внутри с HashSet, вы можете положить вниз?

A:
Анализ (а) A == B является ложным,
(B) a.equals (B) верно, так как равноценные, должны вписываться в HashSet, только положить

Строка = «ABC», то память будет искать постоянное поколение (постоянный пул), если нет, то вместе в открытом пространстве в памяти постоянного поколения, адрес указателя стека заплатил, если у вас уже есть «ABC» из памяти, непосредственно присвоить адрес указателя стека, поэтому 
строка str1 = "AA",
Srting str2 = "AA";
Строка str3 = "AA";
....
идти дальше, str1 == str2 == str3, был бы равен ему, (а) == определение, (б) определение равно (); равно, равно из - за их адреса, и поэтому только имеет постоянный пул пространства памяти, решать все равно, 
и строку строки = новая строка ( " а «), это» а «конфигурация строки объекта объект String , снова, новый новый стек вместе в памяти, присвоить указатель на стек, он ссылается на новую конфигурацию объекта назначаются ул String. До тех пор , как новый String (), то стек адреса указывают на груду последнего нового адреса из 

1  общественный  класс Тест1 {
 2      общественных  статический  недействительный основной (String [] арг) {
 3          Строка s1 = новый String ( "Привет" );
4          строки s2 = новый String ( "Привет" );
5          System.out.println (s1 == s2); // ложные 
6          System.out.println (s1.equals (с2)); // верно 
7  
8          Строка s3 = новый String ( "Привет" );
9          Строка s4 = "Привет" ;
10         System.out.println (s3 == s4); // ложные 
11          System.out.println (s3.equals (s4)); // истинный 
12  
13          Строка s5 = "привет" ;
14          Строка s6 = "Привет" ;
15          System.out.println (s5 == s6); // истинные 
16          System.out.println (s5.equals (s6)); // истинно 
17      }
 18  
19 }

Тест1 Подробного
s1 ~ s6 с использованием равных () меньше объяснения, значение всякого сравнения, является истинным. Следующее объяснение ==

s1, s2: из оба из которых являются новыми, каждое пространство , выделенное в куче , и назначить соответствующий адрес в памяти s1, s2. Различные адресное пространство, == сравнение ложно. Но каждый хранится на кучи космических значений один и те же адреса в струнном постоянном пуле объектов. Демонстрация фиги т.е. на понятном объяснении.
s3, s4 Demo пояснительная выше.
s5, s6 являются значениями в постоянном бассейне, оба из одной и той же точки объекта до постоянного пула, который является тем же значением адреса, результат верен

 

1  общественный  класс Test2 {
 2      общественных  статический  недействительный основной (String [] арг) {
 3           строки s1 = "Привет" ;
4              строки s2 = "мир" ;
5              Строка s3 = "HelloWorld" ;
6              System.out.println (s3 == s1 + s2); // ложные 
7              System.out.println (s3.equals ((S1 + S2))); // истинный 
8              System.out.println (s3 == "привет" + "мир"); // истинные 
9              System.out.println (s3.equals ( "привет" + "мир" )); //угрожают 
10      }
 11 }

Подробное Test2

равно (метод) не интерпретирует сравнение, значение сравнения, равны, являются истинными.

s1 и s2 суммируются в пространстве , чтобы открыть строку постоянный пул, то сплайсинг, то адресное пространство s1 и s2 после сплайсинга адреса. S3 с разными адресами, поэтому вывод является ложным.
s3 и «привет» + «мир» сравнение «привет» + «Мир» первый сшитый «HelloWorld», а затем пойти , чтобы найти , есть ли строка постоянная пул «HelloWorld», есть, и поэтому имеет строку s3 Объект, то верно.

Краткое описание
1, String з = новый String ( "привет") создает 2 (1) объект, String s = "привет" , чтобы создать 1 (0) объекты.
Примечание: Основана в скобках , когда есть строковая константа пула объектов привет!
2, если строковые переменные вместе, первое открытое пространство в сплайсинга.
3, если строка является постоянной суммой, это первое увеличение, а затем найти постоянный бассейн, если есть прямой возврат, в противном случае, он будет создан.

рекомендация

отwww.cnblogs.com/linliquan/p/11259483.html