Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
Что выведет код?
Anonymous Quiz
37%
12false
26%
1false
23%
false12
14%
false1
👍4🤩3🎉1💯1
⌨️ Полные и сокращённые версии AND и OR

&& и || называются сокращёнными логическими операторами AND и OR соответственно, или операторами короткой схемы вычислений. В спецификации Java их ещё зовут условными. Значения их операндов могут быть только булева типа.

В отличие от двойных, одиночные & и | называются операторами полной схемы вычислений. Значения их операндов могут быть как только булевыми, так и только целочисленными (вместе с оператором ^ они используются в побитовых операциях).

В чём разница?

В том, что для операторов & и | всегда вычисляются значения обоих операндов, а при работе операторов && и || второй операнд вычисляется только по необходимости.

То есть иногда результат выражения однозначно определён уже по первому операнду:

Если первый операнд && равен false, то второй не вычисляется, так как уже понятно, что результат всего выражения будет false.

Если первый операнд || равен true, то второй не вычисляется, так как уже понятно, что || вернёт true.

&& и || используют как операторы булевой логики. Они оперируют значениями только булева типа и применяются только в логических выражениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143🔥1
System.out.println(2 ^ 3);
👍2
Что выведет код?
Anonymous Quiz
10%
0
34%
1
17%
5
40%
Ошибка компиляции
👍3🤯3😱1👌1
☕️Использование библиотеки Vaadin

Vaadin - это Java библиотека для создания веб-приложений с использованием пользовательского интерфейса на основе компонентов. Она предоставляет набор готовых элементов управления и возможность создавать собственные компоненты.

➡️Один из основных классов в Vaadin - это UI, который представляет собой пользовательский интерфейс приложения. Для создания нового UI необходимо наследоваться от класса UI и переопределить метод init(), где создаются компоненты интерфейса.

Пример создания UI с использованием Vaadin:

public class MyUI extends UI {
@Override
protected void init(VaadinRequest request) {
Button button = new Button("Click me");
button.addClickListener(e -> Notification.show("Button clicked"));

setContent(button);
}
}


В данном примере мы создаем кнопку и добавляем к ней обработчик нажатия, который выводит уведомление при клике на кнопку.

✔️Еще один важный класс в Vaadin - это Layout, который представляет собой контейнер для компонентов. Существует несколько типов Layout, таких как VerticalLayout, HorizontalLayout, GridLayout и др. Каждый из них определяет способ размещения компонентов.

Пример использования Layout для размещения компонентов:

VerticalLayout layout = new VerticalLayout();
layout.addComponent(new Label("Hello, Vaadin!"));
layout.addComponent(new Button("Click me"));
setContent(layout);


⚙️В данном примере мы создаем вертикальный Layout, добавляем к нему Label и кнопку, и устанавливаем его как контент для UI.

Также Vaadin предоставляет множество других компонентов, таких как Table, Form, DateField и др., которые можно использовать для создания более сложных интерфейсов.

🔖В целом, Vaadin - это мощная библиотека для создания веб-приложений на Java с удобным и интуитивно понятным API. Она упрощает процесс разработки пользовательского интерфейса и позволяет создавать богатые и интерактивные веб-приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111🔥1👏1👨‍💻1
public class Quest {
public static void main(String[] args) {
System.out.println(true &! false);
}
}
Что выведет код?
Anonymous Quiz
56%
true
7%
false
37%
Ошибка компиляции
👍43🔥1🎉1
⌨️ Что вы знаете о методе main()?

Метод main() - точка входа в программу. В приложении может быть несколько таких методов. Если метод отсутствует, то компиляция возможна, но при запуске будет получена ошибка `Error: Main method not found`.


public static void main(String[] args) {}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29💯21🔥1
public class Quest {
public static void main(String[] args) {
System.out.println(isEqual(1, 1));
}

private static boolean isEqual(int i, int j) {
return (i == j) ? null : false;
}
}
Что выведет код?
Anonymous Quiz
12%
true
12%
false
46%
null
30%
NullPointerException
🤯8😱1🎉1
⌨️ Как ^, | и & работают с целочисленными операндами

Пример:

int a = 3 & 5;
int b = 3 | 5;
int c = 3 ^ 5;

System.out.println(a); // 1
System.out.println(b); // 7
System.out.println(c); // 6


Чтобы думать как Java, нужно:
Перевести значения обоих операндов в двоичную систему счисления.

Расположить результаты перевода друг под другом.

Сравнять в них число разрядов (дополнить лидирующими нулями).

Применить к битам из каждого столбца оператор (&, | или ^).

Записать результат каждой операции ниже в том же столбце.

Перевести итог в десятичную форму.

Потренеруемся на примере 3 & 5:
Число 3 в двоичной системе счисления имеет вид 11, а число 5 — 101.

Так как у числа 5 три разряда в двоичной системе, а у числа 3 — всего два, добавим лидирующий ноль к числу 3 в двоичной системе и получим 011.

Берём цифры из обоих чисел и применяем к ним попарно оператор & (AND):

011
&&&
101
===
001

Получаем число 001. В десятичной записи ему соответствует число 1. Поэтому операция 3 & 5 и возвращает в результате 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥53👨‍💻2
public class Quest {
public static void main(String[] args) {
String s = null;
if (s != null & s.length() > 0) {
System.out.println("FULL");
} else {
System.out.println("EMPTY");
}
}
}
👏8🎉3🤯1😱1🤩1
public class Quest {
public static void main(String[] args) {
int i = 0;
System.out.println(--i++);
}
}
😁18
Что выведет код?
Anonymous Quiz
36%
-1
26%
0
7%
1
30%
Ошибка компиляции
🤯7🎉3😁1👌1
System.out.println(true ^ true & false);
Что выведет код?
Anonymous Quiz
41%
true
59%
false
👏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
👍3332❤‍🔥1🔥1👏1💯1👨‍💻1
⌨️ Почему нельзя объявить метод интерфейса с модификатором final?

В случае интерфейсов указание модификатора final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131🔥1👏1