Ветвление switch
В Java существует два основных типа ветвлений скрипта: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.
В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.
Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.
#для_начинающих
В Java существует два основных типа ветвлений скрипта: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.
В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.
Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.
#для_начинающих
👍8❤2🔥2
Что выведет следующий код?
Anonymous Quiz
29%
0-0 0-1 1-0 1-1 2-0 2-1
19%
0-0 0-1 0-2 1-0 1-1 1-2 2-0 2-1 2-2
42%
Бесконечный вывод «0-0 0-1»
10%
0-0 0-1
👍6
Метод putAll()
Метод
Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод
#для_начинающих
Метод
putAll() принадлежит интерфейсу Map и используется для добавления всех элементов из одной карты (Map) в другую. Этот метод принимает в качестве аргумента другую карту и добавляет все ее записи в вызывающую карту.Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод
putAll() предоставляет простой способ объединения.#для_начинающих
👍13
Метод startsWith()
Метод
Этот метод возвращает
#для_начинающих
Метод
startsWith() является частью класса String и используется для проверки того, начинается ли строка с определенной подстроки. Вот сигнатура метода:public boolean startsWith(String prefix)
Этот метод возвращает
true, если вызывающая строка начинается с указанного префикса (prefix), и false в противном случае.#для_начинающих
👍10
Метод compareTo()
Метод
где
— Отрицательное число указывает на то, что текущий объект меньше, чем объект
— Ноль указывает на то, что текущий объект равен объекту
— Положительное число указывает на то, что текущий объект больше, чем объект
#для_начинающих
Метод
compareTo() используется для сравнения двух объектов. Обычно он применяется к объектам, реализующим интерфейс Comparable, чтобы определить их относительный порядок. Вот как обычно выглядит сигнатура метода compareTo():int compareTo(T obj)
где
T — это тип объектов, с которыми сравнивается текущий объект. Метод возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, как текущий объект сравнивается с переданным объектом obj.— Отрицательное число указывает на то, что текущий объект меньше, чем объект
obj.— Ноль указывает на то, что текущий объект равен объекту
obj.— Положительное число указывает на то, что текущий объект больше, чем объект
obj.#для_начинающих
👍15
Single Responsibility Principle
Принцип единственной ответственности (Single Responsibility Principle, SRP) является одним из принципов SOLID, предложенных Робертом Мартином. Этот принцип гласит, что у класса должна быть только одна причина для изменения. Иными словами, класс должен выполнять только одну ответственность.
Применительно к Java это означает, что класс должен быть спроектирован так, чтобы он занимался только одним аспектом функциональности. Если у класса есть более одной обязанности, его стоит разделить на несколько классов, каждый из которых будет отвечать за свою конкретную обязанность.
#для_продвинутых
Принцип единственной ответственности (Single Responsibility Principle, SRP) является одним из принципов SOLID, предложенных Робертом Мартином. Этот принцип гласит, что у класса должна быть только одна причина для изменения. Иными словами, класс должен выполнять только одну ответственность.
Применительно к Java это означает, что класс должен быть спроектирован так, чтобы он занимался только одним аспектом функциональности. Если у класса есть более одной обязанности, его стоит разделить на несколько классов, каждый из которых будет отвечать за свою конкретную обязанность.
#для_продвинутых
👍12❤3🔥1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18😁12👍4
Phaser
С
#для_продвинутых
Phaser очень похож на более известную CountDownLatch. Однако он предоставляет некоторые дополнительные функции. Он позволяет нам установить динамическое количество потоков, которые должны ждать перед продолжением выполнения. С
Phaser определенное количество потоков должно дождаться барьера, прежде чем перейти к следующей фазе выполнения. Благодаря этому мы можем координировать несколько фаз выполнения.#для_продвинутых
👍8
StringJoiner
В примере выше создается объект
#для_продвинутых
StringJoiner — это класс в Java, введенный в Java 8, который предоставляет удобный способ объединения строк с использованием разделителя. Этот класс обеспечивает более гибкий и выразительный способ объединения строк, чем использование обычных конкатенаций строк или метода StringBuilder.В примере выше создается объект
StringJoiner с разделителем ",". Затем добавляются три элемента ("Apple", "Banana", "Orange"). В результате вызова метода toString() получается строка, в которой элементы объединены с использованием заданного разделителя.#для_продвинутых
👍17
CountDownLatch
#для_продвинутых
CountDownLatch — это синхронизационный механизм, предоставляемый пакетом java.util.concurrent, который позволяет одному или нескольким потокам ждать, пока определенное количество операций завершится, прежде чем они смогут продолжить свою работу. Он полезен в ситуациях, когда нужно дождаться завершения нескольких параллельных задач, прежде чем продолжить выполнение кода.CountDownLatch работает по принципу счетчика, который уменьшается с каждым вызовом метода countDown(). Когда счетчик достигает нуля, все ожидающие потоки могут продолжить свою работу.#для_продвинутых
👍10❤1
Чем отличаются операторы & и &&, | и ||?
Anonymous Quiz
13%
Операторов & и | в Java нет
45%
& и | - унарные операторы, && и || - бинарные
42%
& и | всегда проверяют оба операнда на истинность, && и || - не всегда
🤔21👍12🔥1
BeanFactory
На картинке
Важно отметить, что
#для_продвинутых
BeanFactory — это интерфейс, определенный в фреймворке Spring, который предоставляет механизм для управления бинами (объектами), инверсии управления (IoC) и внедрения зависимостей (DI). Spring использует этот интерфейс для создания и управления бинами, которые представляют собой объекты, управляемые контейнером Spring.На картинке
XmlBeanFactory используется для создания контейнера бинов на основе конфигурационного файла beans.xml. В этом файле определяется бин с именем «helloWorld», и экземпляр этого бина извлекается из BeanFactory и использован.Важно отметить, что
XmlBeanFactory является устаревшим в новых версиях Spring. Вместо него рекомендуется использовать ApplicationContext, который предоставляет дополнительные функции и улучшенную производительность.#для_продвинутых
👍5
CompletableFuture
#для_продвинутых
CompletableFuture представляет собой мощный и гибкий механизм для асинхронного программирования и выполнения параллельных задач. Этот класс был введен в Java 8 и предоставляет более высокоуровневый интерфейс для работы с асинхронными операциями, чем традиционные Future и ExecutorService.#для_продвинутых
👍6
Low coupling
Low coupling (низкая связанность) в программировании означает уровень зависимости между различными компонентами или модулями программы. Чем ниже связанность, тем лучше, поскольку это облегчает изменения в коде, повышает его читаемость и обеспечивает легкость тестирования и поддержки.
Проектирование с низкой связанностью важно для создания гибкого, поддерживаемого и расширяемого кода. Это улучшает возможность внесения изменений без воздействия на другие части системы.
#для_продвинутых
Low coupling (низкая связанность) в программировании означает уровень зависимости между различными компонентами или модулями программы. Чем ниже связанность, тем лучше, поскольку это облегчает изменения в коде, повышает его читаемость и обеспечивает легкость тестирования и поддержки.
Проектирование с низкой связанностью важно для создания гибкого, поддерживаемого и расширяемого кода. Это улучшает возможность внесения изменений без воздействия на другие части системы.
#для_продвинутых
👍8
PriorityBlockingQueue
Однако важным отличием от стандартной очереди с приоритетом (
#для_продвинутых
PriorityBlockingQueue представляет собой реализацию интерфейса BlockingQueue, которая расширяет функциональность обычной очереди (Queue) для поддержки приоритетов элементов. Элементы в этой очереди сортируются с использованием их естественного порядка или с помощью компаратора, предоставленного во время создания очереди. Однако важным отличием от стандартной очереди с приоритетом (
PriorityQueue) является то, что PriorityBlockingQueue является блокирующей. Это означает, что если очередь пуста, поток, пытающийся извлечь элемент, будет блокирован до тех пор, пока другой поток не вставит элемент.#для_продвинутых
👍7
Метод newSingleThreadExecutor()
Метод
В примере выше создается
#для_продвинутых
Метод
newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.В примере выше создается
ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.#для_продвинутых
👍8
Какой метод должен быть переопределен классом, реализующим интерфейс Runnable для выполнения задачи в отдельном потоке?
Anonymous Quiz
4%
int run()
74%
void run()
3%
boolean run()
11%
void run(int priority)
8%
Узнать ответ
👍22