Intern
Строка дар Java чист?
sobes.tech AI
Ҷавоб аз AI
Дар дар Java — ин пайдарпайи рамзҳо мебошад. Он бо класи String ифода мешавад.
Хусусиятҳои асосӣ:
- Нестаншаванда (Immutable): Пас аз сохтани объект
String, мӯҳтавои он тағир дода намешавад. Ҳар гуна амалиёт, ки ба назар мерасад, ки мӯҳтавои сатрро тағир медиҳад (масалан, пайваст кардан), дар асл як объекти навStringмесозад. String Pool: JavaString Pool(бозори сатрҳо)-ро барои идоракунии самараноки литералҳои сатр истифода мебарад. Вақте ки литералҳои сатр (масалан,"салом") сохта мешаванд, JVM аввал онро дар бозор ҷустуҷӯ мекунад. Агар аллакай вуҷуд дошта бошад, ба объекти мавҷуда ишора мекунад. Агар на, объект нав дар бозор сохта мешавад ва ишора ба он баргардонида мешавад.- Сохтани:
- Бо истифода аз литерал:
String s1 = "салом";(азString Poolистифода мекунад). - Бо истифода аз оператори
new:String s2 = new String("дунё");(як объект нав дар heap месозад, ҳатто агар"дунё"аллакай дар бозор бошад).
- Бо истифода аз литерал:
- Мувофиқат: Барои муқоиса кардани мӯҳтавои сатрҳо, бояд методи
equals()истифода шавад, на оператори==. Оператор==ишораҳоро ба объектҳо муқоиса мекунад.
Масалан:
// Сохтани сатр бо истифода аз литерал (аз бозор)
String s1 = "Java";
// Сохтани сатр бо истифода аз `new` (объекти нав дар heap)
String s2 = new String("Java");
// Мувофиқат кардани мӯҳтаво (дуруст)
boolean мӯҳтавоМеболад = s1.equals(s2); // true
// Мувофиқат кардани ишораҳо (нодуруст барои мӯҳтаво)
boolean ишораҳоМеболад = (s1 == s2); // false
System.out.println("Мӯҳтаво якхела аст: " + мӯҳтавоМеболад);
System.out.println("Ишораҳо якхелаанд: " + ишораҳоМеболад);