Мындай суроону Java Junior кызматына берген маегинде угушуңуз мүмкүн. Бирок менин досума техникалык жетекчи кызматына интервью берип жатып сурашкан.
, жана символдук массив экөө тең
String
тексттик маалыматтарды сактоо үчүн колдонулушу мүмкүн. Бирок белгилүү бир тапшырма үчүн тигил же бул нерсени аң-сезимдүү түрдө тандоо кыйынга турат, эгерде сиз дагы ушундай жагдайга туш боло элек болсоңуз. Бирок, досум белгилегендей, менен байланышкан ар кандай суроо
String
, адатта, саптардын өзгөрүлбөстүгү ( ) деп аталган өзгөчө касиетин камтыйт
Immutable
жана ал интервьюда ушундан пайдаланган.
char []
Андыктан, келгиле, сырсөзүңүздү сактоо үчүн эмес, колдонушуңуз керек болгон бир нече себептерди карап көрөлү
String
.
Себеп 1. Саптар өзгөрүлгүс
Java'да саптар өзгөрүлгүс болгондуктан, сиздин жөнөкөй тексттик сырсөзүңүз таштанды жыйноочу аны тазаламайынча эстутумда жеткorктүү болот. Жана
String
алар
String pool
кайра-кайра колдонуу үчүн колдонулгандыктан, сырсөз эстутумда узак убакытка калуу ыктымалдыгы жогору, бул таптакыр коопсуз эмес.
Java String бассейни - бул атайын жерде - үймөктө жайгашкан бассейн же an objectтердин (саптар) жыйындысы. Java тorндеги стринг эң кеңири таралган маалымат түрлөрүнүн бири. Бул примитивдүү тип эмес, an object, анткени ал ресурстарды көп талап кылат. Ошентип, төрт белгиден турган сапты сактоо үчүн 56 byte эстутум бөлүү керек. Мына ошондуктан саптар башка an objectилер сыяктуу үймөктө сакталат. |
Эстутум таштандысына кирүү мүмкүнчүлүгү бар адам сырсөздү жөнөкөй тексттен таба алат, бул жөнөкөй тексттин ордуна шифрленген сырсөздү колдонууга жакшы себеп. Саптар өзгөрүлгүс болгондуктан, алардын мазмунун өзгөртүүгө болбойт. Ар кандай өзгөртүү жаңы линияны түзөт. Бирок учурда
char []
, анын каалаган элементтерин нөл же бош белги менен алмаштыра аласыз. Ошентип, сырсөздү символдор массивинде сактоо сырсөздү кармап калуу коркунучун азайтат.
2-себеп. Authorлордун сунуштары
Java өзү (албетте, анын жаратуучулары аркылуу) класстын ыкмасын колдонууну
getPassword ()
сунуштайт . Сиз ошондой эле эскирген ыкманы сынап көрүңүз . Эмне үчүн тил авторлорунун сунуштарын аткарууга болбойт?
JPasswordField
char []
getText ()
Себеп 3. Басып чыгаруу
Түрү менен
String
сапта сакталган текст журнал файлында же консолдо басылып чыгуу коркунучу ар дайым бар. Ошол эле учурда, колдонсоңуз
Array
, массивдин мазмунун эмес, анын эстутумдагы ордун гана басып чыгарасыз. Албетте, бул олуттуу себеп эмес, бирок дагы эле мааниси бар.
String strPassword = "Unknown";
char [] charPassword = new char [] {'U', 'n', 'k', 'w', 'o', 'n'};
System.out.println ("String password:" + strPassword);
System.out.println ("char password:" + charPassword);
String password: Unknown
Character password: [C@110b053
Албетте,
char []
сырсөздөрдү сактоо үчүн Java колдонуу панацея эмес. Сиз хэштер менен иштөө жана сырсөздөрдү жөнөкөй текстте сактоонун ордуна шифрлөө сыяктуу коопсуздук чараларын көрүшүңүз керек. Анан, албетте, аныктыгын текшерүү proceduresасынан кийин аны эстутумдан өчүрүңүз.
Javarevisited материалдарынын негизинде
GO TO FULL VERSION