Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
66 gösterim
Soruyu beğendiğim için paylaşıyorum.

JSE swing kütüphanesinde JPasswordField.getPassword() metodu neden String yerine char[](char array) dönderiyor? String'e göre faydası nedir?

İyi çalışmalar.
Java kategorisinde (3.1k puan) sordu
yeniden etikenlendirildi

1 cevap

+2 oy

Bu sorunun cevabi icin birkac guzel aciklama var

  • char[] system.out.print metodu ile yazıldığı zaman ekranda şifrenizi görmeyeceksiniz ki yanlışlıkla loglara veya ekrana log basmamak için kullanışlı oluyor.
  • Diğer açıklama ki bana daha güzel bir sebep olarak göründü. Java'nın memory yönetimine baktığınız zaman string nesnelerini özel bir yapı ile bir listede tuttuğunu ve yeni bir string gerekirse öncelikle string bilgisinin bu listede olup olmadığı kontrol edilir. Eğer varsa bu string'e ait olan adres kullanılır. Yani her string için yeniden yeniden hafızada yer ayrılmaz. Bu durumda şifrenizi string bir değişkene atadıysanız ve bu değişkeni de başka yerlede kullandıysanız. Sizin şifre bilginiz memory üzerinde duruyor ve silinmemiş demektir. Hatta işiniz bittikten sonra hiç kullanmasanız bile Java bu string listesini ne zaman temizleniyor kesin değil. Yani hafızadan silineceğinin bir garantisi yok. Bu durumda başka bir uygulama veya yöntemlerle uygulamanıza ait bir memory dump alınırsa şifre veya şifreleriniz hafızada direk açık olarak bulunduğu için erişilebilir olacak. Şifre bilgisi char[] içinde bulunsaydı, işiniz bittiği zaman garbage collection devreye girdikten sonra silinecekti veya siz başka bir değer atayarak hafızadaki değeri değiştirebilecektiniz. Java'nın string kullanımını otomatik hale getirmesinden dolayı böyle bir konu meydana geliyor ve char[] kullanılmasının daha mantıklı olduğu düşünülüyor.
İyi çalışmalar.
(3.1k puan) cevapladı

İlgili sorular

0 oy
1 cevap 21 gösterim
0 oy
1 cevap 24 gösterim
24 gösterim 26 Ağustos 2017 Java kategorisinde erkanerkisi (207 puan) sordu
0 oy
1 cevap 28 gösterim
0 oy
1 cevap 33 gösterim
33 gösterim 9 Kasım 2016 Java kategorisinde kenan (3.1k puan) sordu
0 oy
2 cevap 30 gösterim
30 gösterim 6 Ekim 2016 Java kategorisinde kenan (3.1k puan) sordu
...