fa
Feedback
Java | Фишки и трюки

Java | Фишки и трюки

رفتن به کانال در Telegram

Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg

نمایش بیشتر
6 824
مشترکین
+724 ساعت
-97 روز
-6030 روز
آرشیو پست ها
⌨️ Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов? Сначала вызываются все статические блоки в очередности от первого статического блока корневого предка и выше по цепочке иерархии до статических блоков самого класса. Затем вызываются нестатические блоки инициализации корневого предка, конструктор корневого предка и так далее вплоть до нестатических блоков и конструктора самого класса. 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)

Как стать востребованным DevOps-специалистом всего за полгода и увеличить свой доход минимум в 3 раза? Самое перспективное направление в IT сейчас – DevOps. И пока одни его боятся и обходят стороной, другие снимают все сливки. Реальный пример – автор канала «Devops за полгода» Марсель Ибраев, Senior system engineer в Core42 Cloud и спикер учебного центра Слёрм. Совместно с ребятами из Честного Знака, Лаборатории Касперского, VK и Jetty Cloud, они запускают новый крутой проект для всех начинающих DevOps-специалистов. В канале собраны все фишки о том, как: – Начать свой путь в DevOpsОсвоить базовые компетенции DevOps-специалиста – Стать Junior DevOps и повысить свою стоимость на рынке труда в 3 раза Переходи и забирай бесплатную карту по базовым и основным компетенциям для всех, кто собирается в DevOps 👉 @devopsupgrade Реклама. ИП Аердинов Никита Вадимович ИНН 638103515932 erid: LjN8K7zVy

Что выведет код?
Anonymous voting

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();
    }
}

Внесение ПО в реестр Минцифры Запустим процесс и выполним задачу по внесению программного обеспечения и оборудования в реестр
Внесение ПО в реестр Минцифры Запустим процесс и выполним задачу по внесению программного обеспечения и оборудования в реестры Минцифры и Минпромторга Расскажем о требованиях, процедуре и сроках и снизим риски отказа! Подать заявку #реклама nadovreestr.ru О рекламодателе

Какие логические операции и операторы вы знаете?
&   Логическое AND (И);
&&  Сокращённое AND;
|   Логическое OR (ИЛИ);
||  Сокращённое OR;
^   Логическое XOR (исключающее OR (ИЛИ));
!   Логическое унарное NOT (НЕ);
&=  AND с присваиванием;
|=  OR с присваиванием;
^=  XOR с присваиванием;
==  Равно;
!=  Не равно;
?:: Тернарный (троичный) условный оператор.

Простой тест для выбора профессии в IT Пройдите тест за 5 минут и узнайте, какая профессия вам подходит. Начать #реклама 16+
Простой тест для выбора профессии в IT Пройдите тест за 5 минут и узнайте, какая профессия вам подходит. Начать #реклама 16+ free.skillfactory.ru О рекламодателе

⌨️ Каким образом можно получить доступ к члену класса, объявленному как 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);

Я хочу трекнуть ваш мозг Встречайте Neiry Mind Tracker — устройство для тех, кто работает за компом и кто хочет успевать боль
Я хочу трекнуть ваш мозг Встречайте Neiry Mind Tracker — устройство для тех, кто работает за компом и кто хочет успевать больше… 🚀 При этом чувствовать себя лучше и не выгорать Продуктивность: 📈 Стресс: 📉 Функции: Мониторинг твоего состояния в реальном времени и уведомления о повышенной усталости (и другом!) «Нейропомодоро» — чтобы ты не отвлекался на всякую фигню 3 тренинга, чтобы ты стал спокоен, словно удав Устройство (повязки или наушники) идёт вместе с бесплатным приложением на iOS, Windows, MacOS. Android — скоро! Подробности и покупка — всё на сайте, переходи: https://tglink.io/5ff12d9c1704 Реклама. ООО "НЕЙРИ". ИНН 9701140612. erid: LjN8K2Mek

Domain-Driven Design (DDD) — это методология разработки программного обеспечения, ориентированная на понимание и моделировани
Domain-Driven Design (DDD) — это методология разработки программного обеспечения, ориентированная на понимание и моделирование бизнес-домена. Она ставит акцент на использовании общего языка между бизнесом и разработчиками, создании детальной модели бизнес-домена, определении сущностей, значений, агрегатов, сервисов и репозиториев для построения гибких, понятных и масштабируемых систем. DDD подчеркивает важность использования общего, ясного языка (Язык Унифицированного Домена (Ubiquitous Language)), понятного и для бизнеса, и для разработчиков. Это позволяет уменьшить разрыв между бизнесом и разработкой.

Многофакторная аутентификация Avanpost MFA+ Надёжное решение для защиты от несанкционированного доступа с поддержкой всех сов
Многофакторная аутентификация Avanpost MFA+ Надёжное решение для защиты от несанкционированного доступа с поддержкой всех современных методов аутентификации. ⚡ Все стандартные технологии интеграции: SAML, Kerberos, OpenID Connect и др., ⚡ Собственное мобильное приложение Avanpost Authenticator, ⚡ Гибкое лицензирование. Avanpost MFA+ возьмет на себя большую часть рутинных задач, разгрузив ваших администраторов для выполнения более важных процессов. Перейти на сайт #реклама 16+ promo.avanpost.ru О рекламодателе

photo content

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

Что выведет код?
Anonymous voting

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();
    }
}

⌨️ Зачем нужны и какие бывают блоки инициализации? Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов. Существуют статические и нестатические блоки инициализации. Статический блок инициализации выполняется в момент загрузки класса в JVM загрузчиком классов (Class Loader).

public class StaticInitialization {
    static {
        System.out.println("Статическая инициализация");
    }
}
Нестатический блок инициализации выполняется в момент создания класса (new).

public class NonstaticInitialization {
    {
        System.out.println("Нестатическая инициализация");
    }
}
Несколько блоков инициализации выполняются в порядке следования в коде класса. Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса. Блок инициализации возможно создать и в анонимном классе.

Code Review – тонкий юмор под острым соусом кодерской сатиры Шерстим интернет и отбираем только жизненные IT-мемы от которых
Code Reviewтонкий юмор под острым соусом кодерской сатиры Шерстим интернет и отбираем только жизненные IT-мемы от которых смешно, грустно и провокационно – одновременно. Поделись с душным коллегой, пусть расслабится 👇 И подписаться не забудь: @coode_review

Что имеет более высокий уровень абстракции?
Anonymous voting

⌨️ Почему в некоторых интерфейсах вообще не определяют методов? Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.

Что выведет код?
Anonymous voting