TGViewer
Java Interview Review Java Interview Review @javasobes · 6.56K subscribers
Post #360 12.6K
Когда стоит выбрать char[] вместо String?

Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива (как это было сделано раньше в самом String).

Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк (вроде интернирования), которые могут оказаться эффективнее ваших.

Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.

Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.

Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.

#Классы
#Безопасность
More from @javasobes
  1. Sep 17, 2022Что такое synchronized? Можно применять как модификатор метода, и как самостоятельный опер…
  2. Sep 14, 2022​Чем отличаются checked и unchecked исключения? Вопрос формулируют по-разному, суть вопрос…
  3. Sep 13, 2022Какие бывают модификаторы? 🔘 Модификаторы доступа private, protected, public (рассмотрим…
  4. Sep 8, 2022Какие существуют литералы? Литерал – последовательность символов, обозначающая значение пр…
  5. Sep 6, 2022Чем отличается final finally finalize? (2/2) finally – часть языковой конструкции try-catc…
  6. Sep 2, 2022Чем отличается final finally finalize? (1/2) Тем, что это даже синтаксически разные вещи.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →