Sobes.tech
Junior — Middle

Чӣ тавр фарқ мекунад тағйирёбандаи оддӣ бо тағйирёбандаи, ки ҳамчун охирин (final) эълон шудааст, дар контексти истифодаи сатрҳо дар забони барномасозӣ?

sobes.tech AI

Ҷавоб аз AI

Дар Java калидӣ калимаи final дар вақти эълони тағйирёбандаи сатр маънои онро дорад, ки ишора ба объекти сатр пас аз оғоз кардан тағйир дода намешавад. Яъне, агар тағйирёбанда ҳамчун final String s = "hello"; эълон карда шавад, пас баъдтар наметавон ба s дигар сатр таъин кард.

Муҳим аст, ки фаҳмидан, ки сатр дар Java худи ҳамон тағйирнопазир (immutable) аст, бинобар ин мазмуни объекти сатр наметавонад барои тағйирёбандаҳои оддӣ ё финалӣ тағйир дода шавад. Фарқ дар он аст, ки тағйирёбандаи оддӣ метавонад ба объектҳои гуногуни сатр дар вақтҳои гуногун ишора кунад, дар ҳоле ки финалӣ ҳамеша ба ҳамон объект ишора мекунад.

Масалан:

String a = "hello";
a = "world"; // иҷозат дода шудааст

final String b = "hello";
b = "world"; // хато дар компилятсия