Иммутабельность в Java. Часть 5.2. Конкатенация строк с помощью StringBuilder.
Рассмотрим еще несколько примеров использования StringBuilder в Java.
StringBuilder message = new StringBuilder("Welcome");
message.append(" to").append(" Java").append("!");
String finalMessage = message.toString();
Вывод переменной finalMessage: Welcome to Java!
Пример использования StringBuilder в цикле на Картинке 2:
В классе StringBuilderExample мы сначала создаем объекта СтрингБилдера, затем создаем массив некоторых строк. Проходимся по массиву с помощью цикла форыч и склеиваем строки из массива с помощью СтрингБилдера и его метода .append(). Далее преобразуем СтрингБилдер в строку через метод .toString() класса Object (не забываем, что StringBuilder тоже наследуется от класса Object) и выводим результат в консоль.
В этом примере StringBuilder эффективно используется в цикле для конкатенации слов из массива. Это помогает избежать создания большого количества временных объектов строк, что может привести к снижению производительности.
Помним, что StringBuilder - отличный выбор, когда нам нужно изменять строки в цикле или при конкатенации большого количества строк для улучшения производительности.
🚀 Вывод:
Используем StringBuilder для эффективной и производительной конкатенации строк в Java.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Рассмотрим еще несколько примеров использования StringBuilder в Java.
StringBuilder message = new StringBuilder("Welcome");
message.append(" to").append(" Java").append("!");
String finalMessage = message.toString();
Вывод переменной finalMessage: Welcome to Java!
Пример использования StringBuilder в цикле на Картинке 2:
В классе StringBuilderExample мы сначала создаем объекта СтрингБилдера, затем создаем массив некоторых строк. Проходимся по массиву с помощью цикла форыч и склеиваем строки из массива с помощью СтрингБилдера и его метода .append(). Далее преобразуем СтрингБилдер в строку через метод .toString() класса Object (не забываем, что StringBuilder тоже наследуется от класса Object) и выводим результат в консоль.
В этом примере StringBuilder эффективно используется в цикле для конкатенации слов из массива. Это помогает избежать создания большого количества временных объектов строк, что может привести к снижению производительности.
Помним, что StringBuilder - отличный выбор, когда нам нужно изменять строки в цикле или при конкатенации большого количества строк для улучшения производительности.
🚀 Вывод:
Используем StringBuilder для эффективной и производительной конкатенации строк в Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍2🔥1👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11❤2💯2
Что делает команда git commit -m "Message"?
Anonymous Quiz
29%
Сохраняет изменения в индексе
6%
Создаёт новую ветку
53%
Добавляет изменения в репозиторий
6%
Выводит текущее состояние репозитория
6%
Посмотреть ответ
✍3👍2🎉2
Иммутабельность в Java. Часть 5.3. Конкатенация строк с помощью StringBuffer.
Продолжаем погружение в мир иммутабельности, и сегодня рассмотрим использование StringBuffer для конкатенации строк.
🚀 StringBuffer: Безопасная конкатенация
В предыдущих частях мы узнали, что строки в Java неизменяемы (immutable). И если нам нужно часто модифицировать строки без создания новых объектов, мы можем использовать не только StringBuilder, но и StringBuffer.
Пример использования на Картинке:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Привет, ");
stringBuffer.append("мир!");
String result = stringBuffer.toString();
Вывод: Привет, мир!
🔗 StringBuffer vs StringBuilder:
Оба класса предоставляют похожие функциональности, но StringBuilder является его несинхронизированной версией, что делает его более производительным в непотокобезопасных сценариях.
✨ Преимущества StringBuffer:
1) Изменяемость
Может быть изменен без создания новых объектов.
2) Потокобезопасность
Методы append и delete синхронизированы, что делает StringBuffer потокобезопасным.
🤔 Когда выбрать StringBuffer?
Если наши операции с конкатенацией могут быть использованы в многопоточной среде, StringBuffer - наш выбор.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Продолжаем погружение в мир иммутабельности, и сегодня рассмотрим использование StringBuffer для конкатенации строк.
🚀 StringBuffer: Безопасная конкатенация
В предыдущих частях мы узнали, что строки в Java неизменяемы (immutable). И если нам нужно часто модифицировать строки без создания новых объектов, мы можем использовать не только StringBuilder, но и StringBuffer.
Пример использования на Картинке:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Привет, ");
stringBuffer.append("мир!");
String result = stringBuffer.toString();
Вывод: Привет, мир!
🔗 StringBuffer vs StringBuilder:
Оба класса предоставляют похожие функциональности, но StringBuilder является его несинхронизированной версией, что делает его более производительным в непотокобезопасных сценариях.
✨ Преимущества StringBuffer:
1) Изменяемость
Может быть изменен без создания новых объектов.
2) Потокобезопасность
Методы append и delete синхронизированы, что делает StringBuffer потокобезопасным.
🤔 Когда выбрать StringBuffer?
Если наши операции с конкатенацией могут быть использованы в многопоточной среде, StringBuffer - наш выбор.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4✍2💯2
Frontend vs Backend: Разбираем разницу в мире разработки!
Сегодня мы поговорим о том, что делает frontend и backend разработки уникальными. Давайте разберем ключевые различия.
🚀 Frontend: Основа пользовательского интерфейса
Frontend - это та часть веб-приложения, с которой взаимодействует пользователь. Вот ключевые моменты:
1) Языки программирования: HTML, CSS, JavaScript.
2) Ответственности: Отображение данных, взаимодействие с пользователем, создание интерфейса.
👩💻 Backend: Сердце приложения
Backend - это "мозги" веб-приложения, скрытые от пользователя. Вот, что важно:
1) Языки программирования: Java, PHP, Python, Ruby, Node.js и др.
2) Ответственности: Обработка данных, бизнес-логика, взаимодействие с базой данных.
🔄 Совместная работа:
Frontend и backend взаимодействуют, обмениваясь данными через API. Frontend отправляет запросы на backend, и тот отвечает необходимой информацией. А frontend, в свою очередь, отрисовывает понятный человеческому глазу интерфейс в приложении (будь то веб сайтом, мобильным приложением или десктопом (приложение для рабочего стола)).
🌈 Еще есть Full-Stack разработчики:
Они охватывают и frontend, и backend! Полный контроль над приложением.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Сегодня мы поговорим о том, что делает frontend и backend разработки уникальными. Давайте разберем ключевые различия.
🚀 Frontend: Основа пользовательского интерфейса
Frontend - это та часть веб-приложения, с которой взаимодействует пользователь. Вот ключевые моменты:
1) Языки программирования: HTML, CSS, JavaScript.
2) Ответственности: Отображение данных, взаимодействие с пользователем, создание интерфейса.
👩💻 Backend: Сердце приложения
Backend - это "мозги" веб-приложения, скрытые от пользователя. Вот, что важно:
1) Языки программирования: Java, PHP, Python, Ruby, Node.js и др.
2) Ответственности: Обработка данных, бизнес-логика, взаимодействие с базой данных.
🔄 Совместная работа:
Frontend и backend взаимодействуют, обмениваясь данными через API. Frontend отправляет запросы на backend, и тот отвечает необходимой информацией. А frontend, в свою очередь, отрисовывает понятный человеческому глазу интерфейс в приложении (будь то веб сайтом, мобильным приложением или десктопом (приложение для рабочего стола)).
🌈 Еще есть Full-Stack разработчики:
Они охватывают и frontend, и backend! Полный контроль над приложением.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👨💻2✍1
Кто в SCRUM отвечает за управление бэклогом продукта?
Anonymous Quiz
34%
Scrum Master
10%
Development Team
30%
Product Owner
10%
Scrum Coach
15%
Посмотреть ответ
✍4👍2🎉2❤1👨💻1
Как взаимодействуют frontend и backend?
Сейчас будет очень важное описание на пальцах для хорошего понимания сути. Предположим, у нас есть юзер, который пользуется мобильным приложением, у которого backend написан на Java, а frontend написан на языке Kotlin для Android.
Взаимодействие фронтенда и бэкенда происходит следующим образом:
- есть некий компьютер - сервер;
- есть backend приложение, которое задеплоено (живет) на этом сервере/компьютере;
- есть некий юзер, который пользуется этим приложением через фронтенд (мобильное приложение);
– клиентская часть приложения (фронтенд) отправляет информацию, введенную пользователем, на сервер (бэкенд);
– программа на сервере обрабатывает информацию (бэкенд), общается с своей базой данных, если такое имеется;
– далее информация возвращается клиентской стороне (фронтенд) в понятной для пользователя форме.
Несмотря на то что бэкендом и фронтендом занимаются разные специалисты, каждому из них желательно понимать принципы, по которым работают коллеги.
🤝 По каким правилам/стандартам происходит взаимодействие бэка и фронта?
1) API (Application Programming Interface): Это мост между frontend и backend.
Можно вернуться к постам про REST API по ссылке.
2) HTTP/HTTPS протоколы: Frontend отправляет запросы, а backend отвечает.
Закрепим кратко:
💬 Что происходит в реальном времени?
Frontend отправляет запрос: Например, "Покажи мне данные пользователя".
Backend обрабатывает запрос: Запрашивает данные из базы данных.
Backend отправляет ответ: Frontend получает данные и отображает их.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Сейчас будет очень важное описание на пальцах для хорошего понимания сути. Предположим, у нас есть юзер, который пользуется мобильным приложением, у которого backend написан на Java, а frontend написан на языке Kotlin для Android.
Взаимодействие фронтенда и бэкенда происходит следующим образом:
- есть некий компьютер - сервер;
- есть backend приложение, которое задеплоено (живет) на этом сервере/компьютере;
- есть некий юзер, который пользуется этим приложением через фронтенд (мобильное приложение);
– клиентская часть приложения (фронтенд) отправляет информацию, введенную пользователем, на сервер (бэкенд);
– программа на сервере обрабатывает информацию (бэкенд), общается с своей базой данных, если такое имеется;
– далее информация возвращается клиентской стороне (фронтенд) в понятной для пользователя форме.
Несмотря на то что бэкендом и фронтендом занимаются разные специалисты, каждому из них желательно понимать принципы, по которым работают коллеги.
🤝 По каким правилам/стандартам происходит взаимодействие бэка и фронта?
1) API (Application Programming Interface): Это мост между frontend и backend.
Можно вернуться к постам про REST API по ссылке.
2) HTTP/HTTPS протоколы: Frontend отправляет запросы, а backend отвечает.
Закрепим кратко:
💬 Что происходит в реальном времени?
Frontend отправляет запрос: Например, "Покажи мне данные пользователя".
Backend обрабатывает запрос: Запрашивает данные из базы данных.
Backend отправляет ответ: Frontend получает данные и отображает их.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4✍2🔥2👨💻1
Как добавить новую запись в таблицу SQL?
Anonymous Quiz
14%
ADD NEW
3%
ADD RECORD
79%
INSERT INTO
2%
INSERT RECORD
3%
Посмотреть ответ
🎉5✍2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯7👍3😁3❤1
Память в Java. Часть 1.
Как устроена память в Java?
Для оптимальной работы приложения JVM делит память на область Stack (стек) и область Heap (куча). Всякий раз, когда мы объявляем новые переменные, создаем объекты или вызываем новый метод, JVM выделяет память для этих операций в стеке или в куче.
Объекты попадают в Heap, а значения примитивных переменных, вызовы методов, а также ссылки на объекты попадают в Stack.
Подробнее об этих областях памяти поговорим далее.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Как устроена память в Java?
Для оптимальной работы приложения JVM делит память на область Stack (стек) и область Heap (куча). Всякий раз, когда мы объявляем новые переменные, создаем объекты или вызываем новый метод, JVM выделяет память для этих операций в стеке или в куче.
Объекты попадают в Heap, а значения примитивных переменных, вызовы методов, а также ссылки на объекты попадают в Stack.
Подробнее об этих областях памяти поговорим далее.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍5👨💻2❤1🤓1
Память в Java. Часть 2. Область памяти Stack.
Всякий раз, когда вызывается новый метод, содержащий примитивные значения или ссылки на объекты, то на вершине стека под них выделяется блок памяти. Из этого можно сделать вывод, что Стек хранит значения примитивных переменных, создаваемых в методах, а также ссылки на объекты в Куче, на которые ссылается метод.
Стек работает по схеме LIFO (последним вошел, первым вышел).
Основные особенности Стека:
– Stack заполняется и освобождается по мере вызова и завершения новых методов
– Переменные в стеке существуют до тех пор, пока выполняется метод, в котором они были созданы
– Если память стека будет заполнена, Java бросит исключение java.lang.StackOverFlowError
– Доступ к этой области памяти осуществляется быстрее, чем к куче
– Является потокобезопасным, поскольку для каждого потока создается свой отдельный стек
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Всякий раз, когда вызывается новый метод, содержащий примитивные значения или ссылки на объекты, то на вершине стека под них выделяется блок памяти. Из этого можно сделать вывод, что Стек хранит значения примитивных переменных, создаваемых в методах, а также ссылки на объекты в Куче, на которые ссылается метод.
Стек работает по схеме LIFO (последним вошел, первым вышел).
Основные особенности Стека:
– Stack заполняется и освобождается по мере вызова и завершения новых методов
– Переменные в стеке существуют до тех пор, пока выполняется метод, в котором они были созданы
– Если память стека будет заполнена, Java бросит исключение java.lang.StackOverFlowError
– Доступ к этой области памяти осуществляется быстрее, чем к куче
– Является потокобезопасным, поскольку для каждого потока создается свой отдельный стек
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍4👨💻3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👨💻3🔥2❤1👍1
Какая структура данных используется для быстрого поиска элемента по ключу?
Anonymous Quiz
0%
Очередь
2%
Стек
77%
Хэш-таблица
10%
Связанный список
9%
Массив
2%
Посмотреть ответ
🎉5✍2❤1👍1🔥1
Память в Java. Часть 3. Область памяти Heap.
Что такое Heap?
Heap - это область памяти в виртуальной машине Java (JVM), где хранятся объекты, созданные вашим приложением. Это место, где происходит выделение и освобождение памяти для динамически создаваемых объектов. Новые объекты всегда создаются в Heap (куча), а ссылки на них хранятся в стеке (Stack).
Эти объекты имеют глобальный доступ и могут быть получены из любого места программы.
Эта область памяти разбита на несколько более мелких частей:
– Young Generation – область где размещаются недавно созданные объекты. Когда она заполняется, происходит быстрая сборка мусора. Эта область еще делится на Eden и Survivor Space, в которые попадают объекты по мере времени их жизни в программе.
– Old (Tenured) Generation – здесь хранятся долгоживущие объекты. Когда объекты из Young Generation достигают определенного порога «возраста», они перемещаются в Old Generation.
– Permanent Generation – эта область до Java 8 содержала метаинформацию о классах и методах приложения, но начиная с Java 8 данная область памяти была упразднена.
Про основные особенности Heap поговорим в следующем посте.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Что такое Heap?
Heap - это область памяти в виртуальной машине Java (JVM), где хранятся объекты, созданные вашим приложением. Это место, где происходит выделение и освобождение памяти для динамически создаваемых объектов. Новые объекты всегда создаются в Heap (куча), а ссылки на них хранятся в стеке (Stack).
Эти объекты имеют глобальный доступ и могут быть получены из любого места программы.
Эта область памяти разбита на несколько более мелких частей:
– Young Generation – область где размещаются недавно созданные объекты. Когда она заполняется, происходит быстрая сборка мусора. Эта область еще делится на Eden и Survivor Space, в которые попадают объекты по мере времени их жизни в программе.
– Old (Tenured) Generation – здесь хранятся долгоживущие объекты. Когда объекты из Young Generation достигают определенного порога «возраста», они перемещаются в Old Generation.
– Permanent Generation – эта область до Java 8 содержала метаинформацию о классах и методах приложения, но начиная с Java 8 данная область памяти была упразднена.
Про основные особенности Heap поговорим в следующем посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍3❤2👨💻2
Память в Java. Часть 4. Особенности памяти Heap.
– Динамическое выделение памяти в Heap: Объекты в Heap создаются и уничтожаются во время выполнения программы;
– Когда эта область памяти Heap полностью заполняется, Java бросает java.lang.OutOfMemoryError;
–Доступ к Heap медленнее, чем к Stack;
– Heap в отличие от Stack, автоматически не освобождается. Для сбора неиспользуемых объектов используется сборщик мусора (Garbage Collection);
– Жизненный цикл объектов: Объекты в Heap проходят через различные фазы жизненного цикла, такие как создание, использование и уничтожение.
– В отличие от стека, куча не является потокобезопасной и ее необходимо контролировать, правильно синхронизируя код.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
– Динамическое выделение памяти в Heap: Объекты в Heap создаются и уничтожаются во время выполнения программы;
– Когда эта область памяти Heap полностью заполняется, Java бросает java.lang.OutOfMemoryError;
–Доступ к Heap медленнее, чем к Stack;
– Heap в отличие от Stack, автоматически не освобождается. Для сбора неиспользуемых объектов используется сборщик мусора (Garbage Collection);
– Жизненный цикл объектов: Объекты в Heap проходят через различные фазы жизненного цикла, такие как создание, использование и уничтожение.
– В отличие от стека, куча не является потокобезопасной и ее необходимо контролировать, правильно синхронизируя код.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👨💻3👍1🤓1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12❤4💯2
Что такое пул строк в Java?
Очень часто этот вопрос задают джунам и интернам на собеседованиях.
Пул строк (String Pool) – это множество строк в кучи (Java Heap memory). Мы знаем, что String – особый класс в java, с помощью которого мы можем создавать строковые объекты. Строковый пул возможен только потому, что строки в Java неизменные.
На картинке мы видим как именно строковый пул расположен в памяти Java Heap. И как разные способы создания строк влияют на расположение их в памяти.
Метод intern().
Вы можете использовать метод .intern() у созданной строки, чтобы явно поместить эту строку в Пул Строк. Это может быть полезно, если вам нужно сравнивать строки с использованием ==.
Экономия ресурсов:
Использование Пула Строк позволяет экономить память, так как одинаковые строки не будут дублироваться. Вместо этого будет использоваться один экземпляр строки.
Строки из пула:
Когда вы создаете строку литералом, Java сначала проверяет, есть ли такая строка в Пуле. Если она там уже существует, то используется существующий экземпляр.
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Очень часто этот вопрос задают джунам и интернам на собеседованиях.
Пул строк (String Pool) – это множество строк в кучи (Java Heap memory). Мы знаем, что String – особый класс в java, с помощью которого мы можем создавать строковые объекты. Строковый пул возможен только потому, что строки в Java неизменные.
На картинке мы видим как именно строковый пул расположен в памяти Java Heap. И как разные способы создания строк влияют на расположение их в памяти.
Метод intern().
Вы можете использовать метод .intern() у созданной строки, чтобы явно поместить эту строку в Пул Строк. Это может быть полезно, если вам нужно сравнивать строки с использованием ==.
Экономия ресурсов:
Использование Пула Строк позволяет экономить память, так как одинаковые строки не будут дублироваться. Вместо этого будет использоваться один экземпляр строки.
Строки из пула:
Когда вы создаете строку литералом, Java сначала проверяет, есть ли такая строка в Пуле. Если она там уже существует, то используется существующий экземпляр.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👍2👨💻2🔥1🤓1
Что такое Maven в контексте Java разработки?
Anonymous Quiz
6%
Компилятор Java
4%
Интеграционная среда разработки (IDE)
76%
Система управления зависимостями
11%
Фреймворк для тестирования
3%
Посмотреть ответ
👍6✍2👨💻2🎉1
Конструктор в Java. Часть 1.
Сегодня поговорим о конструкторах в Java - важном аспекте объектно-ориентированного программирования.
Конструкторы играют ключевую роль в создании и инициализации объектов. Давайте разберемся, что это такое.
Конструктор - это специальный метод в классе, который вызывается при создании объекта этого класса. Он выполняет инициализацию объекта, задавая начальные значения его полей.
Основные черты конструкторов:
1) Название совпадает с именем класса.
У конструктора имя точно такое же, как у класса, к которому он принадлежит.
2) Вызывается при создании объекта.
Конструктор автоматически вызывается при создании нового экземпляра класса с использованием оператора new.
3) Может принимать параметры.
Конструктор может принимать параметры, что позволяет передавать значения для инициализации объекта.
Пример простого конструктора на Картинке.
Далее рассмотрим типы конструкторов и причины их использовать!
👩💻 Наш практический курс Java–разработчика
✅ JavaStart. Подписаться
Сегодня поговорим о конструкторах в Java - важном аспекте объектно-ориентированного программирования.
Конструкторы играют ключевую роль в создании и инициализации объектов. Давайте разберемся, что это такое.
Конструктор - это специальный метод в классе, который вызывается при создании объекта этого класса. Он выполняет инициализацию объекта, задавая начальные значения его полей.
Основные черты конструкторов:
1) Название совпадает с именем класса.
У конструктора имя точно такое же, как у класса, к которому он принадлежит.
2) Вызывается при создании объекта.
Конструктор автоматически вызывается при создании нового экземпляра класса с использованием оператора new.
3) Может принимать параметры.
Конструктор может принимать параметры, что позволяет передавать значения для инициализации объекта.
Пример простого конструктора на Картинке.
Далее рассмотрим типы конструкторов и причины их использовать!
Please open Telegram to view this post
VIEW IN TELEGRAM
✍3👍3👨💻2❤1🔥1