Java | Фишки и трюки
前往频道在 Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna
显示更多6 951
订阅者
+124 小时
-107 天
+1230 天
帖子存档
6 951
⌨️ Несколько способов для избежания NullPointerException:
✔️ Используйте
Optional из пакета java.util.
✔️ При сравнении константы с переменной пришедшей из вне, нужно вызывать equals() на константе.
✔️ А при сравнении двух переменных используйте java.util.Objects#equals.
✔️ Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.
✔️ Вызывайте методы equals() и equalsIgnoreCase() на известных объектах.
✔️ Применяйте valueOf() вместо toString().
✔️ Воспользуйтесь аннотациями @NotNull и @Nullable на основе IDE.
✔️ При возврате из метода коллекций, не стоит возвращать null, лучше пустую коллекцию (java.util.Collections#emptyList).
#java #NullPointerException #Optional6 951
«Код Ход Шоу» от Т-Банка для тех, кто работает на Java или только вкатывается:
— Необычный формат крестиков-ноликов. Участникам задают вопросы на знание Java, и если они отвечают правильно — могут поставить знак.
— Команды разработчиков из бигтеха (Т-Банк, Яндекс, Вертикаль, X5 Tech, Сбер, Samokat. tech и другие).
— Победитель проходит дальше, а в финале встретятся две лучшие команды.
Смотрите ютуб-шоу и подписывайтесь на телеграм-канал с анонсами новых выпусков и другими полезными материалами по Java.
erid:2VtzqvgzshZ
Реклама. АО "Тинькофф Банк", ИНН 7710140679, лицензия ЦБ РФ № 2673
6 951
public class Quest {
public static void main(String[] args) {
String str1 = "Hello World";
String str2 = new String("Hello World");
Set<String> set = new HashSet<>();
set.add(str1);
set.add(str2);
for (String str : set) {
if (str == str1) {
System.out.print("origin ");
}
if (str == str2) {
System.out.print("replace ");
}
}
}
}6 951
Прокачай скиллы, чтобы получить заветный оффер
Ребята из команды FAANG School собрали в одном месте гайды, шпаргалки, мануалы и чек-листы, в общем всё, что поможет стать сильными профессионалами.
Основные концепции Docker, наборы команд в JetBrains, пошаговая RoadMap по Java и множество других полезных материалов будут всегда под рукой, помогут быстро справиться со сложными вопросами и тем самым приблизят вас к высокой зп.
Библиотечный каталог постоянно пополняется, а значит, будет еще больше ценного контента. Бесплатно и навсегда!
Переходи, заглядывай в библиотеку и сохраняй полезности, если хочешь увеличить шансы устроиться в Яндекс, Amazon, Google и другие.
Попасть в библиотеку JAVA JUNIOR
6 951
⌨️ Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?
Не совсем. Примитивное поле экземпляра класса хранится не в стеке, а в куче. Любой объект (всё, что явно или неявно создаётся при помощи оператора new) хранится в куче.
#java #heap #stack #question
6 951
⌨️ Что такое Heap и Stack память в Java? Какая разница между ними?
Heap (куча) используется Java Runtime для выделения памяти под объекты и классы. Создание нового объекта также происходит в куче. Это же является областью работы сборщика мусора. Любой объект, созданный в куче, имеет глобальный доступ и на него могут ссылаться из любой части приложения.
Stack (стек) это область хранения данных также находящееся в общей оперативной памяти (RAM). Всякий раз, когда вызывается метод, в памяти стека создается новый блок, который содержит примитивы и ссылки на другие объекты в методе. Как только метод заканчивает работу, блок также перестает использоваться, тем самым предоставляя доступ для следующего метода. Размер стековой памяти намного меньше объема памяти в куче. Стек в Java работает по схеме LIFO (Последний-зашел-Первый-вышел)
Различия между Heap и Stack памятью:
✔️ Куча используется всеми частями приложения, в то время как стек используется только одним потоком исполнения программы.
✔️ Всякий раз, когда создается объект, он всегда хранится в куче, а в памяти стека содержится лишь ссылка на него. Память стека содержит только локальные переменные примитивных типов и ссылки на объекты в куче.
✔️ Объекты в куче доступны с любой точки программы, в то время как стековая память не может быть доступна для других потоков.
✔️ Стековая память существует лишь какое-то время работы программы, а память в куче живет с самого начала до конца работы программы.
✔️ Если память стека полностью занята, то Java Runtime бросает исключение java.lang.StackOverflowError. Если заполнена память кучи, то бросается исключение java.lang.OutOfMemoryError: Java Heap Space.
✔️ Размер памяти стека намного меньше памяти в куче.
✔️ Из-за простоты распределения памяти, стековая память работает намного быстрее кучи.
Для определения начального и максимального размера памяти в куче используются -Xms и -Xmx опции JVM. Для стека определить размер памяти можно с помощью опции -Xss.
#java #heap #stack #memory
6 951
Как разработчику увеличить доход минимум в два раза?
Освоить навыки по Kubernetes – самому востребованному направлению в 2024 году.
Что это за зверь такой, с чем его едят и как быстро его понять, рассказывает SRE Lead в MTS Digital и преподаватель курсов Слёрма Кирилл Борисов в своём канале.
Переходите и узнайте, как «кубы» могут пригодиться в работе, какие возможности открывают и прокачайте текущие скиллы.
Для всех новых подписчиков подготовили гайд «Как работает etcd с Kubernetes и без него»
Подписывайтесь, забирайте, изучайте и применяйте. Потом спасибо скажете 👉 @Kubernetes_Borisov
Реклама. ИП Аердинов Никита Вадимович ИНН 638103515932 erid: LjN8K7zVy
6 951
public class Quest {
public static void main(String[] args) {
int i=0;
label1: System.out.print(i++);
if (i < 2) {
goto label1;
}
}
}
#java #quest6 951
⌨️ Проброс исключений
Иногда возникает необходимость передать исключение дальше по стеку вызовов, чтобы оно было обработано на более высоком уровне. Для этого можно использовать ключевое слово
throws в сигнатуре метода и не перехватывать исключение в блоке catch, либо пробросить исключение дальше внутри блока catch.
public void someMethod() throws IOException {
try {
// код, который может выбросить IOException
} catch (IOException e) {
// возможно, выполнить какую-то обработку
throw e; // проброс исключения дальше
}
}
#java #throw #throws6 951
Внимание, разработчики! Приглашаем вас на открытый вебинар по алгоритмам и структурам данных от опытного практикующего эксперта💯
Ждём вас на уроке «Визуальное сравнение 1-2-3 алгоритмов сортировок» от OTUS, где мы:
- подробно рассмотрим три алгоритма сортировок: Пузырьком, Вставкой и Шелла;
- сравним их по различным критериям: сложность и количество обменов, стабильность и адаптивность;
- напишем алгоритмы и сравним их быстродействие;
- продемонстрируем их работу на игральных картах🂱️
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
Встречаемся 1 июля в 20:00 мск в преддверии старта курса «Алгоритмы и структуры данных».
🔴 Регистрируйтесь на урок и подписывайтесь на бота, чтобы ознакомиться с программой курса и забронировать спецскидку 10% (акция до 30 июня): https://otus.pw/1fZY/?erid=LjN8Jszu4
6 951
⌨️ DateTimeFormatter — это класс в Java, который используется для форматирования и парсинга дат и времени. Он предоставляет различные методы для преобразования объектов даты и времени в строку и наоборот. Этот класс является частью пакета
java.time.format и был введен в Java 8 в рамках новой Date and Time API.
DateTimeFormatter содержит предопределенные форматы, такие как ISO_LOCAL_DATE, ISO_LOCAL_TIME, ISO_LOCAL_DATE_TIME, BASIC_ISO_DATE и другие. Так же, DateTimeFormatter поддерживает создание пользовательских форматов с использованием шаблонов.
Форматирование даты и времени:
LocalDateTime now = LocalDateTime.now();
// Использование предопределенного формата
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
String formattedDate = now.format(formatter);
System.out.println("ISO_LOCAL_DATE_TIME: " + formattedDate);
// ISO_LOCAL_DATE_TIME: 2024-06-20T21:46:43.584659
// Использование пользовательского формата
DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String customFormattedDate = now.format(customFormatter);
System.out.println("Custom format: " + customFormattedDate);
// Custom format: 20-06-2024 21:46:43
Парсинг строки в дату и время:
String dateStr = "2024-06-20T15:30:00";
// Использование предопределенного формата
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
System.out.println("Parsed date (ISO_LOCAL_DATE_TIME): " + dateTime);
// Parsed date (ISO_LOCAL_DATE_TIME): 2024-06-20T15:30
// Использование пользовательского формата
String customDateStr = "20.06.2024 15:30:00";
DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
LocalDateTime customDateTime = LocalDateTime.parse(customDateStr, customFormatter);
System.out.println("Parsed date (custom format): " + customDateTime);
// Parsed date (custom format): 2024-06-20T15:30
#java #DateTimeFormatter6 951
🖥 Java - самый крупный обучающий ресурс в Telegram, посвященный изучению Java !
По контенту:
1. Собрали для вас лучшие бесплатные курсы по Java 2024 года.
2. 2250 вопросов с собесов с разбором от Senior разработчика.
3. Пишем пет-проекты на JAVA - лучшая практика.
4. А здесь я собрал лучшие ресурсы Java разработчика, тут и бесплтаные книги по Java и вакансии лдя джунов, много полезного.
Подписывайтесь, такие знания в 2024-м году на вес золота: @javatg
6 951
public class Quest {
public static void main(String[] args) {
System.out.print(condition1() && condition2());
}
private static boolean condition1() {
System.out.print(1);
return false;
}
private static boolean condition2() {
System.out.print(2);
return true;
}
}6 951
⌨️ Что такое «анонимные классы»? Где они применяются?
Это вложенный локальный класс без имени, который разрешено декларировать в любом месте обрамляющего класса, разрешающем размещение выражений. Создание экземпляра анонимного класса происходит одновременно с его объявлением. В зависимости от местоположения анонимный класс ведет себя как статический либо как нестатический вложенный класс - в нестатическом контексте появляется окружающий его экземпляр.
Анонимные классы имеют несколько ограничений:
✔️ Их использование разрешено только в одном месте программы - месте его создания;
✔️ Применение возможно только в том случае, если после порождения экземпляра нет необходимости на него ссылаться;
✔️ Реализует лишь методы своего интерфейса или суперкласса, т.е. не может объявлять каких-либо новых методов, так как для доступа к ним нет поименованного типа.
Анонимные классы обычно применяются для:
✔️ создания объекта функции (function object), например, реализация интерфейса
Comparator;
✔️ создания объекта процесса (process object), такого как экземпляры классов Thread, Runnable и подобных;
✔️ в статическом методе генерации;
✔️ инициализации открытого статического поля final, которое соответствует сложному перечислению типов, когда для каждого экземпляра в перечислении требуется отдельный подкласс.
#java #abstract #class6 951
Кошка говорит «мяу», собака говорит «гав», Java-разработчик говорит «кто-нибудь видел мой энергетик? А то мне еще баги исправлять».
Да, быть разработчиком на Java непросто. Но нет ничего невозможного, если у вас есть желание разобраться и двухнедельный подготовительный курс от Хекслета за 990 рублей.
⏰ Начинаем уже 9 июля!
– 62 онлайн-урока;
– 4 живых вебинара;
– практика с первого дня;
– помощь наставника в закрытом чате.
Нет опыта? Не беда! Как говорят в IT-среде: «А что, если попробовать так?»
И мы тоже говорим вам “Попробуйте”!
6 951
⌨️ Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
✅ Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.
✅ Для создания объекта статического вложенного класса объект внешнего класса не требуется.
✅ Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
✅ Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
✅ В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статической такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание
.this после его имени. Например: Outer.this.
#java #nested #static #class
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
