Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
⌨️ Какая основная разница между String, StringBuffer, StringBuilder?

Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.

Класс StringBuffer изменяемый - использовать StringBuffer следует тогда, когда необходимо часто модифицировать содержимое.

Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей.

#java #String #StringBuffer #StringBuilder
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113
⌨️ Особенности класса String

✔️ Это неизменяемый (immutable) и финализированный тип данных;

✔️ Строки-литералы, интернированные объекты класса String JVM хранит в пуле строк;

✔️ Объект класса String можно получить, используя двойные кавычки;

✔️ Можно использовать оператор + для конкатенации строк;

✔️ Начиная с Java 7 строки можно использовать в конструкции switch.

#java #string
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91😁1
⌨️ Почему String неизменяемый класс?

Есть несколько преимуществ в неизменности строк:

✔️ Пул строк возможен только потому, что строка неизменяемая, таким образом виртуальная машина сохраняет больше свободного места в Heap, поскольку разные строковые переменные указывают на одну и ту же переменную в пуле. Если бы строка была изменяемой, то интернирование строк не было бы возможным, потому что изменение значения одной переменной отразилось бы также и на остальных переменных, ссылающихся на эту строку.

✔️ Если строка будет изменяемой, тогда это станет серьезной угрозой безопасности приложения. Например, имя пользователя базы данных и пароль передаются строкой для получения соединения с базой данных и в программировании сокетов реквизиты хоста и порта передаются строкой. Так как строка неизменяемая, её значение не может быть изменено, в противном случае злоумышленник может изменить значение ссылки и вызвать проблемы в безопасности приложения.

✔️ Неизменяемость позволяет избежать синхронизации: строки безопасны для многопоточности и один экземпляр строки может быть совместно использован различными потоками.

✔️ Строки используются classloader и неизменность обеспечивает правильность загрузки класса.

✔️ Поскольку строка неизменяемая, её hashCode() кэшируется в момент создания и нет необходимости рассчитывать его снова. Это делает строку отличным кандидатом для ключа в HashMap т.к. его обработка происходит быстрее.

#java #string #immutable
Please open Telegram to view this post
VIEW IN TELEGRAM
👍171
Почему строки в Java неизменяемы (immutable)?

В Java объект String неизменяемый, что означает, что после создания его состояние нельзя изменить. Но зачем это нужно?

1️⃣ Безопасность: неизменяемые строки делают код более безопасным, особенно при работе с потоками или использованием строк в ключах коллекций (например, HashMap).

2️⃣ Производительность: строковые объекты кэшируются в пуле строк (String Pool), что позволяет Java эффективно управлять памятью.

3️⃣ Совместимость: неизменяемость строк облегчает работу с множеством библиотек, так как они не могут непреднамеренно изменить строку.

Пример:
String str = "Hello";
str.concat(" World");
System.out.println(str); // Hello


Хотя метод concat добавляет строку, оригинальный объект остается неизменным, создавая новый объект в памяти.

💡 Совет: если нужно часто изменять строки, используйте StringBuilder или StringBuffer.

#java #string #immutable
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
⌨️ Почему String неизменяемый класс?

Есть несколько преимуществ в неизменности строк:

✔️ Пул строк возможен только потому, что строка неизменяемая, таким образом виртуальная машина сохраняет больше свободного места в Heap, поскольку разные строковые переменные указывают на одну и ту же переменную в пуле. Если бы строка была изменяемой, то интернирование строк не было бы возможным, потому что изменение значения одной переменной отразилось бы также и на остальных переменных, ссылающихся на эту строку.

✔️ Если строка будет изменяемой, тогда это станет серьезной угрозой безопасности приложения. Например, имя пользователя базы данных и пароль передаются строкой для получения соединения с базой данных и в программировании сокетов реквизиты хоста и порта передаются строкой. Так как строка неизменяемая, её значение не может быть изменено, в противном случае злоумышленник может изменить значение ссылки и вызвать проблемы в безопасности приложения.

✔️ Неизменяемость позволяет избежать синхронизации: строки безопасны для многопоточности и один экземпляр строки может быть совместно использован различными потоками.

✔️ Строки используются classloader и неизменность обеспечивает правильность загрузки класса.

✔️ Поскольку строка неизменяемая, её hashCode() кэшируется в момент создания и нет необходимости рассчитывать его снова. Это делает строку отличным кандидатом для ключа в HashMap т.к. его обработка происходит быстрее.

#java #string #immutable
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6