Java | Фишки и трюки
Kanalga Telegram’da o‘tish
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna
Ko'proq ko'rsatish6 951
Obunachilar
+124 soatlar
-107 kunlar
+1230 kunlar
Postlar arxiv
6 951
В Битрикс24 есть всё для продуктивной совместной работы
Мессенджер — общайтесь с коллегами
Видеозвонки — синкайтесь с командой онлайн
Диск — храните все важные файлы в одном месте
Календарь — планируйте всё, что планируется
Таск-менеджер — управляйте проектами и задачами эффективно
CRM — автоматизируйте продажи и увеличивайте прибыль.
AI-помощник — отдайте ему рутину, чтобы сосредоточиться на главном
Забирайте бесплатно для своей команды любого размера.
Начать
#реклама
bitrix24.ru
О рекламодателе
6 951
Скрытие полей (Hiding Fields)
Внутри класса поле, имеющее то же имя, что и поле суперкласса, скрывает поле суперкласса, даже если их типы различны.
Внутри подкласса на поле суперкласса нельзя ссылаться по простому имени. Вместо этого доступ к полю должен осуществляться через
super.
Скрывать поля не рекомендуем, поскольку это затрудняет чтение кода.
#java #HidingFields6 951
Хочешь практиковать Java на реальных задачах? В поисках оригинального контента, а не копипаста из других источников?
👉 Заходи на новый канал 👈
Топовые задачи:
— Много вопросов по concurrency и jvm
— Разбираем стандартные ошибки и их решения
— Оптимизируем код
— Best practices
— Задачи с реальных собеседований
— Разный уровень сложности
— Подробный разбор каждого решения
Достойный материал для подготовки к собеседованиям, а также сложные и интересные задачи из реальной практики.
Автор канала – Java-эксперт, более 10 лет в разработке. Опытный Lead dev и тимлид.
👉 Подписывайся и попробуй решить последнюю задачу! https://t.me/java_interview_tasks
6 951
⌨️ Описание и назначение разных циклов
Цикл for со счетчиком
for (initialization; condition; update) {
// тело цикла
}
Описание:
initialization: выполняется один раз перед началом цикла. Обычно используется для инициализации счетчика.
condition: проверяется перед каждой итерацией. Если условие истинно, выполняется тело цикла.
update: выполняется после каждой итерации. Обычно используется для изменения счетчика.
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println(i + ": " + numbers[i]);
}
Применение:
Используется, когда известно количество итераций заранее. Часто применяется для работы с массивами или коллекциями, когда нужен индекс.
Цикл for-each
for (type element : collection) {
// тело цикла
}
Описание:
Итерируется по каждому элементу коллекции (например, массива, списка, множества). Обеспечивает удобный способ доступа к каждому элементу без использования индексов.
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
Применение:
Предпочтителен, когда не нужен доступ к индексам элементов.
Цикл while
while (condition) {
// тело цикла
}
Описание:
condition: проверяется перед каждой итерацией. Если условие истинно, выполняется тело цикла.
String code = UUID.randomUUID().toString();
boolean isCodeExists = repo.isCodeExists(code);
while (isCodeExists) {
code = UUID.randomUUID().toString();
isCodeExists = repo.isCodeExists(code);
}
repo.saveCode(code);
Применение:
Используется, когда количество итераций неизвестно заранее и определяется во время выполнения программы. Цикл может не выполниться ни одного раза.
Цикл do-while
do {
// тело цикла
} while (condition);
Описание:
Выполняет тело цикла хотя бы один раз, а затем проверяет условие condition. Если условие истинно, цикл повторяется.
String command;
do {
command = readCommand();
doCommand(command);
} while (!"EXIT".equals(command));
Применение:
Используется, когда тело цикла должно выполниться хотя бы один раз, независимо от условия. Часто применяется для меню или ввода данных, где сначала нужно выполнить действие, а затем проверить условие.
#java #cycles #for #while6 951
⚡️ Прими участие в бета-тесте уникального тренажера по Java!
- 1000 вопросов с реальных интервью в одном Telegram-боте
- возможность получить Job offer от наших партнеров
- простая навигация по разделам
- разный уровень сложности: junior или middle
🎁 Первым 100 пользователям дарим PREMIUM доступ на 7 дней!
Забудь о скучных книгах и монотонных уроках на ютубе - с нами изучение Java станет увлекательным приключением! 🌟
Тестируй бесплатно сегодня
👉 Переходи в бота
erid: LjN8KLrMf
6 951
class Base {
public String className = "Base";
public String getClassName() {
return className;
}
}
class Derived extends Base {
public String className = "Derived";
}
public class Quest {
public static void main(String[] args) {
System.out.println(new Derived().getClassName());
}
}6 951
⌨️ Модульное и интеграционное тестирование. Назначение и различия
Модульное и интеграционное тестирование — это два различных типа тестирования программного обеспечения, которые служат для разных целей и проводятся на разных этапах процесса разработки.
Модульное тестирование направлено на проверку отдельных частей кода, обычно функций или методов, изолированно от остальных частей системы. Оно позволяет обнаруживать ошибки на ранней стадии разработки, способствует упрощению поиска и исправления дефектов, снижению затрат на исправление ошибок в дальнейшем. В качестве библиотеки для модульного тестирования может быть использована, например JUnit.
Пример: если есть функция, которая выполняет вычисление площади круга, модульный тест будет проверять правильность работы этой функции с разными входными значениями (радиусами).
Интеграционное тестирование направлено на проверку взаимодействия между различными модулями или компонентами системы, чтобы убедиться, что они правильно работают вместе. Одна из библиотек для интеграционного тестирования - TestNG.
Пример: если есть система, состоящая из двух модулей: один выполняет вход пользователя, а другой — отображение информации о пользователе, интеграционный тест проверит, что после успешного входа отображается правильная информация о пользователе.
6 951
⌨️ Полезные стримы. Объединение стримов
Даны два списка фруктов. Нужно объединить их в одном стриме, обработать его и вывести результат.
var list1 = List.of("apple", "banana", "cherry");
var list2 = List.of("orange", "pineapple", "mango");
var result = Stream.concat(list1.stream(), list2.stream())
.filter(s -> s.length() > 5)
.toList();
System.out.println(result);
// [banana, cherry, orange, pineapple]
#java #stream #concat6 951
⌨️ Как получить доступ к переопределенным методам родительского класса?
С помощью ключевого слова
super мы можем обратиться к любому члену родительского класса - методу или полю, если они не определены с модификатором private.
super.method();
#java #override #super6 951
class Dog {
public static void bark() {
System.out.print("Woof ");
}
}
class Basenji extends Dog {
public static void bark() { }
}
public class Bark {
public static void main(String[] args) {
Dog woofer = new Dog();
Dog nipper = new Basenji();
woofer.bark();
nipper.bark();
}
}6 951
⌨️ Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
Если возникшее исключение - наследник
RuntimeException:
- для статических блоков инициализации будет выброшено java.lang.ExceptionInInitializerError;
- для нестатических будет проброшено исключение-источник.
Если возникшее исключение - наследник Error, то в обоих случаях будет выброшено java.lang.Error. Исключение: java.lang.ThreadDeath - смерть потока. В этом случае никакое исключение выброшено не будет.
#java #initialization #exception6 951
Обучаем Java-разработчиков оплата после выхода на работу
В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты.
Если задуматься, то все в выигрыше:
— ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя;
— в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше;
— мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут;
— мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов.
Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку!
Узнать больше
#реклама 16+
kata.academy
О рекламодателе
6 951
Кошка говорит «мяу», собака говорит «гав», Java-разработчик говорит «кто-нибудь видел мой энергетик? А то мне еще баги исправлять».
Да, быть разработчиком на Java непросто. Но нет ничего невозможного, если у вас есть желание разобраться и двухнедельный подготовительный курс от Хекслета за 990 рублей.
– 62 онлайн-урока;
– 4 живых вебинара;
– практика с первого дня;
– помощь наставника в закрытом чате.
Нет опыта? Не беда! Как говорят в IT-среде: «А что, если попробовать так?»
И мы тоже говорим вам “Попробуйте”
⏰ Cтарт уже 29 мая!
6 951
⌨️ Полезные стримы. Группировка
Дан список людей с именем и городом проживания. Нужно сгруппировать их по городам.
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
record Person(String name, String city) {}
public class StreamExample {
public static void main(String[] args) {
List<Person> people = List.of(
new Person("Alice", "New York"),
new Person("Bob", "Los Angeles"),
new Person("Charlie", "New York"),
new Person("David", "Los Angeles"),
new Person("Edward", "San Francisco")
);
Map<String, List<Person>> peopleByCity = people.stream()
.collect(Collectors.groupingBy(Person::city));
peopleByCity.forEach((city, peopleInCity) -> {
System.out.println(city + ": " + peopleInCity.stream()
.map(Person::name)
.collect(Collectors.joining(", ")));
});
// Вывод:
// San Francisco: Edward
// New York: Alice, Charlie
// Los Angeles: Bob, David
}
}
#java #stream #grouping6 951
🚀Онлайн-Хакатон Practice & Scale AI
Тебя ждут увлекательные мастер-классы, командная работа над актуальными кейсами, возможность представить свои результаты на захватывающей питч-сессии и доказать, что ты лучший из лучших! 🔝
🧑💻Уникальный кейс:
- Рерайтинг текста с помощью ИИ на уровне, позволяющем проходить фильтрации распознающих ИИ систем
🏆Призовой фонд 500 000 рублей!
Приступай к разработке решения уже сейчас, чтобы 9 июня представить лучший продукт - мы ждем: крутые решения в программном коде проекта, потенциал для рыночной масштабируемости и внедрения в бизнес.
📅Когда: 7 - 9 июня 2024 года
🌐Формат: Онлайн
🔥Дедлайн регистрации: 4 июня 2024 года, 23:59 (мск)
Подробности и регистрация: https://tglink.io/8b60a81a9c18
6 951
⌨️ Внутренняя реализация StringBuilder
Класс
StringBuilder предназначен для создания и манипуляции изменяемыми строками. Это альтернативный класс для String, который позволяет изменять его содержимое без создания новых объектов при каждой операции изменения, что делает его более эффективным при частых операциях изменения строк.
Класс StringBuilder использует массив символов для хранения строки и динамически изменяет его размер по мере необходимости. Переменная count отслеживает текущую длину строки.
Упрощенно:
public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence {
char[] value; // Массив символов, хранящий содержимое строки
int count; // Количество символов в текущем объекте StringBuilder
}
Примерная реализация метода append:
public StringBuilder append(String str) {
if (str == null) str = "null";
int len = str.length();
ensureCapacityInternal(count + len); // расширить массив если нужно
str.getChars(0, len, value, count);
count += len;
return this;
}
Метод str.getChars(..) копирует строку str в массив value в позицию count (то есть добавляет в конец массива).
#java #stringbuilder #implementation6 951
+6
☄️ Горячая акция для IT-специалистов на дизайн и ремонт квартиры!
RE Design Buro создаем дизайн-проекты и реализуем их в жизнь более 15 лет ⭐️
За это время сделали уже 450+ проектов и ремонтов в Москве и области 🏆
Коротко о компании:
⭐️ работают не бригады, а узкие специалисты: плиточники, электрики, сантехники т.д.
⭐️ 6 месяцев средний срок ремонта.
⭐️ рейтинг выполненных ремонтов - 4.9.
⭐️ все цены и сроки фиксируем в договоре.
⭐️ оплата разбивается частями по факту сдачи работ.
💥 Только для специалистов IT-индустрии - скидка 10% на дизайн и ремонт от компании RE Design Buro
‼️ Важное условие — вы работаете в IT-компании, которая получила аккредитацию Минцифры РФ
👉 Наши работы
👉 Мы в Телеграм
👉 Связаться с нами
👉 Консультация дизайнера БЕСПЛАТНО
👉 Получить сметный расчёт стоимости ремонта
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
