Sobes.tech
Junior

Чаро мо намоишро бо истифода аз конструктори new String() намесозем?

sobes.tech AI

Ҷавоб аз AI

Ҳангоми new String() ёзиши истифода бурдан ҳамеша як объект нав String дар куча месозад, ҳатто агар як сатр бо ҳамин арзиш аллакай дар String Pool мавҷуд бошад.

Баръакс, литералҳои сатр (масалан, "салом") дар String Pool ҷойгир мешаванд. Агар як сатр бо ҳамин арзиш аллакай дар String Pool мавҷуд бошад, объекти мавҷударо истифода мебарад. Истифодаи литералҳо имкон медиҳад, ки JVM истифодаи хотирасозиро оптималӣ гардонад.

Аз ин рӯ, new String() ба истеъмоли зиёди хотира оварда мерасонад ва метавонад суръатро кам кунад, бо сабаби эҷоди объектҳои нолозим. Мо афзалият медиҳем ба истифодаи литералҳои сатр ё дигар усулҳои эҷоди сатр (масалан, String.valueOf()) барои сарфаи захираҳо.

// Неставсия дода мешавад. Ҳамеша объект нав месозад дар куча.
String str1 = new String("салом");

// Тавсия дода мешавад. Аз String Pool истифода мебарад, метавонад объект мавҷударо истифода барад.
String str2 = "салом";

// Натичаи муқоиса метавонад фарқ кунад
System.out.println(str1 == str2); // Аксар вақт false, чунки объектҳои гуногун мебошанд