👏6👍3🤯3🎉2
«И» (AND): конъюнкция, логическое умножение
true && true = true
false && false = false
true && false = false
false && true = false
true & true = true
false & false = false
true & false = false
false & true = false
Побитовые операции:
1010
&&&&
1001
====
1000
Включающее «ИЛИ» (OR): дизъюнкция, логическое сложение
true || true = true
false || false = false
true || false = true
false || true = true
true | true = true
false | false = false
true | false = true
false | true = true
Побитовые операции:
1010
||||
1001
====
1011
Исключающее «ИЛИ» (XOR): строгая дизъюнкция, логическое вычитание
true ^ true = false
false ^ false = false
true ^ false = true
false ^ true = true
Побитовые операции:
1010
^^^^
1001
====
0011
«НЕ» (NOT): инверсия, отрицание
!true = false
!false = true
Побитовый унарный оператор NOT:
~~
01
==
10
Порядок выполнения операторов
Когда в выражении несколько логических операторов, результат вычисляется с учётом их приоритета. Если нет логических скобок, то операции выполняются в таком порядке:
! ~ (NOT)
& (AND)
^ (XOR)
| (OR)
&& (условный AND)
|| (условный OR)
Если одинаковые операции стоят по соседству, то раньше выполняется та, что левее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33✍3❤2❤🔥1🔥1👏1💯1👨💻1
В случае интерфейсов указание модификатора
final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1🔥1👏1
Модификатор
abstract применяется для создания абстрактных классов и методов. Абстрактный класс является шаблоном для других классов и не может быть инстанциирован сам по себе. Он предоставляет общие черты для всех своих подклассов, которые могут быть как абстрактными, так и конкретными классами.Абстрактный метод, который помечен ключевым словом
abstract, не имеет реализации в абстрактном классе. Если в классе есть хотя бы один абстрактный метод, то весь класс должен быть объявлен как абстрактный.Использование абстрактных классов и методов позволяет определить общий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍1
Ключевое слово
interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public.Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию
default и статических static методов.Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
public, статическими static и неизменяемыми final.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1🔥1👏1
public abstract или (начиная с Java 8 ) default - методами с реализацией по-умолчанию, а поля - public static final.Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса, и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥2❤1👏1
👍6🎉2❤1😍1🏆1
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс
Clonable, который указывает на то, что класс поддерживает механизм клонирования.#java #interface #marker
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Что имеет более высокий уровень абстракции?
Anonymous Quiz
5%
класс
24%
абстрактный класс
70%
интерфейс
👍4🔥2❤🔥1🎉1
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
Существуют статические и нестатические блоки инициализации.
Статический блок инициализации выполняется в момент загрузки класса в JVM загрузчиком классов (Class Loader).
public class StaticInitialization {
static {
System.out.println("Статическая инициализация");
}
}
Нестатический блок инициализации выполняется в момент создания класса (
new).
public class NonstaticInitialization {
{
System.out.println("Нестатическая инициализация");
}
}
Несколько блоков инициализации выполняются в порядке следования в коде класса.
Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
Блок инициализации возможно создать и в анонимном классе.
#java #initialization #block #static
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥1
🔥9🤯6❤1🎉1
Domain-Driven Design (DDD) — это методология разработки программного обеспечения, ориентированная на понимание и моделирование бизнес-домена. Она ставит акцент на использовании общего языка между бизнесом и разработчиками, создании детальной модели бизнес-домена, определении сущностей, значений, агрегатов, сервисов и репозиториев для построения гибких, понятных и масштабируемых систем.
DDD подчеркивает важность использования общего, ясного языка (Язык Унифицированного Домена (Ubiquitous Language)), понятного и для бизнеса, и для разработчиков. Это позволяет уменьшить разрыв между бизнесом и разработкой.
#java #DDD #domain #driven #design
DDD подчеркивает важность использования общего, ясного языка (Язык Унифицированного Домена (Ubiquitous Language)), понятного и для бизнеса, и для разработчиков. Это позволяет уменьшить разрыв между бизнесом и разработкой.
#java #DDD #domain #driven #design
👍4❤1🔥1👨💻1
getX() и setX().
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);
#java #private #access
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3❤1
Какие логические операции и операторы вы знаете?
#java #logical #operations
& Логическое AND (И);
&& Сокращённое AND;
| Логическое OR (ИЛИ);
|| Сокращённое OR;
^ Логическое XOR (исключающее OR (ИЛИ));
! Логическое унарное NOT (НЕ);
&= AND с присваиванием;
|= OR с присваиванием;
^= XOR с присваиванием;
== Равно;
!= Не равно;
?:: Тернарный (троичный) условный оператор.
#java #logical #operations
❤6🔥2👏2