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

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

Ir al canal en Telegram

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

Mostrar más
6 951
Suscriptores
-324 horas
-127 días
+1230 días
Archivo de publicaciones
⌨️ Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода? ✅ При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass). ✅ Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type. ✅ Можно сузить возвращаемое значение, если они совместимы.

public class Animal {
    public Animal eat() {
        System.out.println("animal eat");
        return null;
    }
    
    public Long calc() {
        return null;
    }
}

public class Dog extends Animal {
    public Dog eat() {
        return new Dog();
    }
    
/*attempting to use incompatible return type
    public Integer calc() {
        return null;
    }
*/
}

Repost from Яндекс
🔲 Посмотрите, как выглядит стол промышленного дизайнера. Авенир Бабин работает в команде Яндекс Маркета и создаёт дизайн для бренда аксессуаров Commo: наушников, пауэрбанков, чехлов и зарядных устройств. Commo — это один из собственных брендов Яндекс Маркета. Помимо него, маркетплейс также развивает, например, бренды велосипедов Raskat, мебели и товаров для дома Pragma, компьютерной техники Lunnen и другие. Подписывайтесь ✨ @yandex

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

public class Quest {
    public static void main(String[] args) {
        System.out.println(!!true);
    }
}

⌨️ В Java static import (статический импорт) позволяет импортировать статические члены (методы и поля) из класса, чтобы использовать их напрямую без указания имени класса. Это может сделать код более читабельным и компактным.

// Для импорта конкретного статического члена
import static package.Clazz.member;

// Для импорта всех статических членов класса
import static package.Clazz.*;
Пример:

public class MathUtils {
    public static final double PI = 3.141592653589793;
    public static int add(int a, int b) {
        return a + b;
    }
    public static int subtract(int a, int b) {
        return a - b;
    }
}

import static MathUtils.PI;
import static MathUtils.add;

public class Main {
    public static void main(String[] args) {
        System.out.println("Value of PI: " + PI);
        System.out.println("Addition result: " + add(5, 3));
    }
}

import static MathUtils.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("Value of PI: " + PI);
        System.out.println("Addition result: " + add(5, 3));
        System.out.println("Subtraction result: " + subtract(5, 3));
    }
}
Плюсы: читаемость, компактность кода. Минусы: - не очевидно откуда берется поле или метод - импорт всех статических членов может привести к конфликтам имен, если разные классы содержат статические члены с одинаковыми именами

👉 С чего начать изучение Apache Kafka? Apache Kafka — многогранный и непростой инструмент. Даже если вы уверены, что знаете
👉 С чего начать изучение Apache Kafka?  Apache Kafka — многогранный и непростой инструмент. Даже если вы уверены, что знаете его, наш курс докажет вам обратное!  💻 Начните работу с Kafka на открытом практическом уроке от OTUS, где вы: — разберете особенности и устройство Kafka; — познакомитесь с основными утилитами; — рассмотрите базовое API для работы с Kafka.  ♦️ Спикер — опытный разработчик и преподаватель. Встречаемся 20 мая в 20:00 мск в преддверии старта курса «Apache Kafka». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!  🔥 Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.pw/6hKL/?erid=LjN8KLX2V

⌨️ К каким конструкциям Java применим модификатор static? ✅полям; ✅методам; ✅вложенным классам; ✅блокам инициализации; ✅членам секции import.

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

public class Quest {
    public static void main(String[] args) {
        Value val = new Value(1);
        System.out.print(val.i);
        System.out.print(change(val).i);
        System.out.print(val.i);
    }

    public static Value change(Value val) {
        val.i = 2;
        return val;
    }

    static class Value {
        int i;
        public Value(int i) {
            this.i = i;
        }
    }
}

⌨️ Способы передачи параметров в методы Существуют два основных способа передачи параметров в методы: "по значению" (pass-by-
⌨️ Способы передачи параметров в методы Существуют два основных способа передачи параметров в методы: "по значению" (pass-by-value) и "по ссылке" (pass-by-reference). В первом случае метод работает с копией значения параметра, не изменяя исходное значение. Во втором случае метод получает ссылку на объект или переменную, и любые изменения в параметре отражаются на исходном объекте или переменной. Понимание разницы между этими способами важно для правильной работы программы и отладки, так как правила могут различаться в разных языках программирования. В Java параметры всегда передаются "по значению", однако при передаче ссылочного типа данных можно изменить сам объект.

Познакомьтесь с основами востребованного языка программирования Java на бесплатном мини-курсе Skillbox! Узнайте, как Java-раз
Познакомьтесь с основами востребованного языка программирования Java на бесплатном мини-курсе Skillbox! Узнайте, как Java-разработчики работают в офисе, на фрилансе, удалёнке и что нужно для старта карьеры. Бессрочный доступ за пару кликов: 👉 https://epic.st/cKK-t?erid=2VtzqurDYbk Что вас ждёт: ✔️ Полезная теория За 4 занятия изучите основы профессии и языка Java по видеоматериалам. ✔️ Интересная практика Напишете первые проекты: Telegram-бота, программу для обработки файлов и чат на Spring. Опыт и знания в IT не нужны для их выполнения. ✔️ Живой эфир с экспертом по Java В финале в прямом эфире пообщаетесь с Даниилом Пилипенко, который более 19 лет работает в сфере Java и веб-разработки. 🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год. Сразу после регистрации пришлём гайд по профессии Java-разработчика 😉 Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

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

public class Quest {

    public static void main(String[] args) {
        int i = 1;
        System.out.print(i);
        System.out.print(change(i));
        System.out.print(i);
    }

    public static int change(int i) {
        i = 2;
        return i;
    }

}

⌨️ Могут ли нестатические методы перегрузить статические? Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.

Разверните Kubernetes за 10 минут — от VK Cloud Сертифицированный K8s от VK Cloud. Масштабируйте до 100 серверов. Разворачива
Разверните Kubernetes за 10 минут — от VK Cloud Сертифицированный K8s от VK Cloud. Масштабируйте до 100 серверов. Разворачивай за 10 минут. Экосистема Kubernetes от VK Cloud: управление с Terraform; мониторинг на базе Prometheus, Grafana. Узнать больше #реклама cloud.vk.com О рекламодателе

⌨️ Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов? Сначала вызываются все статические блоки в очередности от первого статического блока корневого предка и выше по цепочке иерархии до статических блоков самого класса. Затем вызываются нестатические блоки инициализации корневого предка, конструктор корневого предка и так далее вплоть до нестатических блоков и конструктора самого класса. 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 О рекламодателе