Java | Фишки и трюки
رفتن به کانال در Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg
نمایش بیشتر6 824
مشترکین
+724 ساعت
-97 روز
-6030 روز
آرشیو پست ها
6 824
⌨️ Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?
Сначала вызываются все статические блоки в очередности от первого статического блока корневого предка и выше по цепочке иерархии до статических блоков самого класса.
Затем вызываются нестатические блоки инициализации корневого предка, конструктор корневого предка и так далее вплоть до нестатических блоков и конструктора самого класса.
1️⃣ Parent static block(s) → Child static block(s)
2️⃣ Parent non-static block(s) → Parent constructor
→ Child non-static block(s) → Child constructor
Пример:
public class Alert {
public Alert(String message) {
System.out.println(message);
}
}
public class Parent {
public static Alert statVar1 = new Alert("Parent: static variable (statVar1)");
public static Alert statVar2;
static {
statVar2 = new Alert("Parent: static initialization block (statVar2)");
}
public Alert var1 = new Alert("Parent: variable (var1)");
public Alert var2;
{
var2 = new Alert("Parent: initialization block (var2)");
}
public Alert var3 = new Alert("Parent: variable (var3)");
public static Alert statVar3 = new Alert("Parent: static variable (statVar3)");
public Alert contructorVar;
public Parent() {
contructorVar = new Alert("Parent: constructor (contructorVar)");
}
}
public class Child extends Parent {
public static Alert statVar1 = new Alert("Child: static variable (statVar1)");
public static Alert statVar2;
static {
statVar2 = new Alert("Child: static initialization block (statVar2)");
}
public Alert var1 = new Alert("Child: variable (var1)");
public Alert var2;
{
var2 = new Alert("Child: initialization block (var2)");
}
public Alert var3 = new Alert("Child: variable (var3)");
public static Alert statVar3 = new Alert("Child: static variable (statVar3)");
public Alert contructorVar;
public Child() {
contructorVar = new Alert("Child: constructor (contructorVar)");
}
}
public class Test {
public static void main(String[] args) {
new Child();
}
}
Вывод консоли:
Parent: static variable (statVar1) Parent: static initialization block (statVar2) Parent: static variable (statVar3) Child: static variable (statVar1) Child: static initialization block (statVar2) Child: static variable (statVar3) Parent: variable (var1) Parent: initialization block (var2) Parent: variable (var3) Parent: constructor (contructorVar) Child: variable (var1) Child: initialization block (var2) Child: variable (var3) Child: constructor (contructorVar)
6 824
Как стать востребованным DevOps-специалистом всего за полгода и увеличить свой доход минимум в 3 раза?
Самое перспективное направление в IT сейчас – DevOps. И пока одни его боятся и обходят стороной, другие снимают все сливки.
Реальный пример – автор канала «Devops за полгода» Марсель Ибраев, Senior system engineer в Core42 Cloud и спикер учебного центра Слёрм.
Совместно с ребятами из Честного Знака, Лаборатории Касперского, VK и Jetty Cloud, они запускают новый крутой проект для всех начинающих DevOps-специалистов.
В канале собраны все фишки о том, как:
– Начать свой путь в DevOps
– Освоить базовые компетенции DevOps-специалиста
– Стать Junior DevOps и повысить свою стоимость на рынке труда в 3 раза
Переходи и забирай бесплатную карту по базовым и основным компетенциям для всех, кто собирается в DevOps 👉 @devopsupgrade
Реклама. ИП Аердинов Никита Вадимович ИНН 638103515932 erid: LjN8K7zVy
6 824
public class One {
public static void go() {
System.out.print("one ");
}
}
public class Two extends One {
public static void go() {
System.out.print("two ");
}
}
public class Three extends Two {
public static void go() {
System.out.print("three ");
}
}
public class Quest {
public static void main(String[] args) {
One one = new One();
one.go();
One two = new Two();
two.go();
Two two2 = new Three();
two2.go();
}
}6 824
Внесение ПО в реестр Минцифры
Запустим процесс и выполним задачу по внесению программного обеспечения и оборудования в реестры Минцифры и Минпромторга
Расскажем о требованиях, процедуре и сроках и снизим риски отказа!
Подать заявку
#реклама
nadovreestr.ru
О рекламодателе
6 824
Какие логические операции и операторы вы знаете?
& Логическое AND (И); && Сокращённое AND; | Логическое OR (ИЛИ); || Сокращённое OR; ^ Логическое XOR (исключающее OR (ИЛИ)); ! Логическое унарное NOT (НЕ); &= AND с присваиванием; |= OR с присваиванием; ^= XOR с присваиванием; == Равно; != Не равно; ?:: Тернарный (троичный) условный оператор.
6 824
Простой тест для выбора профессии в IT
Пройдите тест за 5 минут и узнайте, какая профессия вам подходит.
Начать
#реклама 16+
free.skillfactory.ru
О рекламодателе
6 824
⌨️ Каким образом можно получить доступ к члену класса, объявленному как private?
✅ Внутри класса доступ к приватной переменной открыт без ограничений;
✅ Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
✅ Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса (геттеры, сеттеры). Например:
getX() и setX().
✅ Через механизм рефлексии (Reflection API):
class Hide {
private int field = 42;
}
...
Hide hide = new Hide();
Field field = Hide.class.getDeclaredField("field");
field.setAccessible(true);
int fieldValue = (int) field.get(hide);6 824
Я хочу трекнуть ваш мозг
Встречайте Neiry Mind Tracker — устройство для тех, кто работает за компом и кто хочет успевать больше…
🚀 При этом чувствовать себя лучше и не выгорать
Продуктивность: 📈
Стресс: 📉
Функции:
⋅ Мониторинг твоего состояния в реальном времени и уведомления о повышенной усталости (и другом!)
⋅ «Нейропомодоро» — чтобы ты не отвлекался на всякую фигню
⋅ 3 тренинга, чтобы ты стал спокоен, словно удав
Устройство (повязки или наушники) идёт вместе с бесплатным приложением на iOS, Windows, MacOS. Android — скоро!
Подробности и покупка — всё на сайте, переходи: https://tglink.io/5ff12d9c1704
Реклама. ООО "НЕЙРИ". ИНН 9701140612. erid: LjN8K2Mek
6 824
Domain-Driven Design (DDD) — это методология разработки программного обеспечения, ориентированная на понимание и моделирование бизнес-домена. Она ставит акцент на использовании общего языка между бизнесом и разработчиками, создании детальной модели бизнес-домена, определении сущностей, значений, агрегатов, сервисов и репозиториев для построения гибких, понятных и масштабируемых систем.
DDD подчеркивает важность использования общего, ясного языка (Язык Унифицированного Домена (Ubiquitous Language)), понятного и для бизнеса, и для разработчиков. Это позволяет уменьшить разрыв между бизнесом и разработкой.
6 824
Многофакторная аутентификация Avanpost MFA+
Надёжное решение для защиты от несанкционированного доступа с поддержкой всех современных методов аутентификации.
⚡ Все стандартные технологии интеграции: SAML, Kerberos, OpenID Connect и др.,
⚡ Собственное мобильное приложение Avanpost Authenticator,
⚡ Гибкое лицензирование.
Avanpost MFA+ возьмет на себя большую часть рутинных задач, разгрузив ваших администраторов для выполнения более важных процессов.
Перейти на сайт
#реклама 16+
promo.avanpost.ru
О рекламодателе
6 824
Обучаем Java-разработчиков оплата после выхода на работу
В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты.
Если задуматься, то все в выигрыше:
— ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя;
— в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше;
— мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут;
— мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов.
Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку!
Узнать больше
#реклама 16+
kata.academy
О рекламодателе
6 824
public class Test {
public static int VAL;
{
VAL = 5;
}
public Test() {
VAL = 10;
}
public static void print() {
System.out.println(VAL);
}
}
public class Quest {
public static void main(String[] args) {
Test.print();
}
}6 824
⌨️ Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
Существуют статические и нестатические блоки инициализации.
Статический блок инициализации выполняется в момент загрузки класса в JVM загрузчиком классов (Class Loader).
public class StaticInitialization {
static {
System.out.println("Статическая инициализация");
}
}
Нестатический блок инициализации выполняется в момент создания класса (new).
public class NonstaticInitialization {
{
System.out.println("Нестатическая инициализация");
}
}
Несколько блоков инициализации выполняются в порядке следования в коде класса.
Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
Блок инициализации возможно создать и в анонимном классе.6 824
Code Review – тонкий юмор под острым соусом кодерской сатиры
Шерстим интернет и отбираем только жизненные IT-мемы от которых смешно, грустно и провокационно – одновременно.
Поделись с душным коллегой, пусть расслабится
👇 И подписаться не забудь:
@coode_review
6 824
⌨️ Почему в некоторых интерфейсах вообще не определяют методов?
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс
Clonable, который указывает на то, что класс поддерживает механизм клонирования.