Java | Фишки и трюки
رفتن به کانال در Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg
نمایش بیشتر6 826
مشترکین
+824 ساعت
+27 روز
-5030 روز
آرشیو پست ها
6 824
Ответьте на 1 вопрос и книги ваши на 30 дней за 0 рублей
Более 200 000 книг и аудиокниг разных жанров в Букмейте. Попробуйте бесплатно!
Попробовать
#реклама 16+
bookmate.ru
О рекламодателе
6 824
⌨️ Использование интерфейсов для множественного наследования
// Создание интерфейсов
interface Printable {
void print();
}
interface Showable {
void show();
}
// Реализация интерфейсов в классе
class MyClass implements Printable, Showable {
public void print() {
System.out.println("Printing...");
}
public void show() {
System.out.println("Showing...");
}
}
public class Main {
public static void main(String[] args) {
// Создание объекта класса MyClass
MyClass obj = new MyClass();
obj.print();
obj.show();
}
}
🔎 В данном коде используются интерфейсы для реализации множественного наследования. Класс MyClass реализует два интерфейса Printable и Showable, и поэтому класс может использовать методы, определенные в обоих интерфейсах. Это позволяет создавать гибкие и модульные программы, используя механизм интерфейсов в Java.6 824
⌨️ Фишка: Создание итератора для пользовательского класса.
Код:
import java.util.Iterator;
public class CustomClass implements Iterable<String> {
private String[] elements;
public CustomClass(String[] elements) {
this.elements = elements;
}
@Override
public Iterator<String> iterator() {
return new CustomIterator();
}
private class CustomIterator implements Iterator<String> {
private int index = 0;
@Override
public boolean hasNext() {
return index < elements.length;
}
@Override
public String next() {
if (this.hasNext()) {
return elements[index++];
} else {
throw new NoSuchElementException();
}
}
}
public static void main(String[] args) {
String[] arr = {"one", "two", "three"};
CustomClass customClass = new CustomClass(arr);
for (String element : customClass) {
System.out.println(element);
}
}
}
💁♂️ Этот код позволяет создать итератор для пользовательского класса CustomClass. Итератор позволяет перебирать элементы массива elements и использовать их в цикле for-each.6 824
Апартаменты YE’S Primorsky в Санкт-Петербурге
В проекте представлены апартаменты площадью от 21 до 128 кв.м. Все юниты в комплексе YE’S сдаются с высококлассной авторской отделкой. Дополнительно возможно приобретение мебели и бытовой техники от известных производителей. Для удобства проживания во всех апартаментах предусмотрена кухонная зона. Особенностью проекта является наличие уникальных двухуровневых апартаментов Penthouse Terrace с панорамными окнами, из которых открывается великолепный вид на город.
Забронировать
#реклама
yesprimorsky.ru
О рекламодателе
6 824
Array vs ArrayList
Выбор между Array и ArrayList зависит от специфики задачи на Java, которую требуется решить.
📌Помните о следующих особенностях этих типов:
• Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayLists может динамически изменяться.
• Массивы Java работают гораздо быстрее, а в ArrayList намного проще добавлять/удалять элементы.
• При работе с Array велика вероятность получить ошибку
ArrayIndexOutOfBoundsException.
• У ArrayList только одно измерение, а вот массивы Java могут быть многомерными.
import java.util.ArrayList;
public class arrayVsArrayList {
public static void main(String[] args) {
// объявление Array
int[] myArray = new int[6];
// обращение к несуществующему индексу
myArray[7]= 10; // ArrayIndexOutOfBoundsException
// объявление ArrayList
ArrayList<Integer> myArrayList = new ArrayList<>();
// простое добавление и удаление элементов
myArrayList.add(1);
myArrayList.add(2);
myArrayList.add(3);
myArrayList.add(4);
myArrayList.add(5);
myArrayList.remove(0);
// получение элементов ArrayList
for(int i = 0; i < myArrayList.size(); i++) {
System.out.println("Element: " + myArrayList.get(i));
}
// многомерный Array
int[][][] multiArray = new int [3][3][3];
}
}6 824
Присоединяйтесь к нашему бесплатному курсу и начните увлекательное путешествие в мир Java!
Изучайте основы, создавайте программы, разбирайтесь с методами и анализируйте ошибки в коде. Практика, упражнения и проверочные тесты помогут вам освоить навыки программирования.
🎓 Чему вы научитесь:
— Создавать программы с использованием основных конструкций языка.
— Разделять код на методы для повторного использования.
— Анализировать ошибки в коде с использованием отладочной печати.
💼 Включено в курс:
29 уроков (видео и/или текст), 35 упражнений в тренажере, 95 проверочных тестов + дополнительные материалы.
Вы с нами?😉
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
6 824
JSON – невероятно удобный и полезный формат для хранения и обмена данными. Java полностью поддерживает его.
Сериализовать данные можно так:
JSONObject author = new JSONObject();
author.put("name", "J. K. Rowling");
author.put("numberOfBooks", 22);
JSONArray books = new JSONArray();
books.put("Harry Potter and the Philosopher's Stone");
books.put("Harry Potter and the Chamber of Secrets");
books.put("Harry Potter and the Prisoner of Azkaban");
author.put("books", books);
System.out.print(author);
Получится вот такая JSON-строка:
{"books":["Harry Potter and the Philosopher's Stone","Harry Potter and the Chamber of Secrets","Harry Potter and the Prisoner of Azkaban"],"name":"J. K. Rowling","numberOfBooks":22}
Десериализация на Java выглядит примерно так:
JSONObject author = new JSONObject(serializedString);
System.out.println("name: " + author.get("name"));
System.out.println("numberOfBooks: " + author.get("numberOfBooks"));
JSONArray books = (JSONArray) author.get("books");
Iterator<Object> i = books.iterator();
System.out.println("books:");
while (i.hasNext()) {
System.out.println(i.next());
}
Нужно добавить зависимость:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20231013</version>
</dependency>6 824
Методы и конструкторы в enum
Перечисления (enum) — это классы Java, определяющие наборы констант. Самый простой enum выглядит так:
public enum Vehicle { CAR, BUS, BICYCLE, SCOOTER }
Но на самом деле, enum в Java обладают гораздо более широким функционалом. Они поддерживают поля, методы, интерфейсы и т.д. Они также Comparable и Serializable и могут имплементировать все методы объекта.
Для наглядности давайте создадим enum Animal и присвоим каждому элементу цвет:
public enum Animal {
DOG("black"),
CAT("white"),
RAT("gray");
private final String color;
Animal(String color){
this.color = color;
}
public String getColor(){
return color;
}
}
Теперь мы можем выполнить перебор элементов массива с помощью статического метода values():
public class Main {
public static void main(String[] args) {
for (Animal a : Animal.values()) {
System.out.println(a.name() + " - " + a.getColor());
}
}
}
Мы получим следующий результат:
DOG - black CAT - white RAT - grayКаждой константе можно присвоить разное поведение при выполнении определенного метода. Например, можно сделать основной метод абстрактным и переопределить его в каждой константе:
public enum Operation {
PLUS { double evaluate(double x, double y) { return x + y; } },
MINUS { double evaluate(double x, double y) { return x - y; } },
abstract double evaluate(double x, double y);
}
Всё это обеспечивает удобную работу с перечислениями в Java.6 824
Открываете счёт — получаете 3000 рублей
Бонусом — кэшбэк 10% и
баллы за операции по счёту (1 балл = 1 рубль).
Всё это — программа лояльности для бизнеса с бесплатным обслуживанием счёта в Альфа-Банке.
Перейти на сайт
6 824
⌨️ Использование аннотаций. Аннотации позволяют добавлять метаданные к вашему коду, что может быть полезно для документирования, тестирования и других целей. Вот пример использования аннотации:
import java.lang.annotation.*;
// Создание аннотации
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MethodInfo {
String author() default "unknown";
String date();
int revision() default 1;
String comments();
}
public class Example {
// Использование аннотации
@MethodInfo(author = "John Doe", date = "2022-08-15", comments = "Example method")
public void performAction() {
// Реализация метода
}
}
В этом примере создается аннотация MethodInfo с параметрами author, date, revision и comments. Затем аннотация применяется к методу performAction. Таким образом, аннотации могут использоваться для предоставления дополнительной информации о вашем коде, что может быть полезно при разработке, тестировании и поддержке проекта.6 824
📖 Java books - огромная библиотека Java книг, актуальных на 2024 год.
🔝 Маст-хэв папка для Java разработчиков: https://t.me/addlist/ZM3J6oFNAnRlNWU6
6 824
Считывание файла из стандартного потока ввода
Перенаправление ввода-вывода — возможность командной оболочки ряда операционных систем перенаправлять стандартные потоки в определённое пользователем место, например, в файл. Характерна для Unix-подобных операционных систем, но в разной степени реализована и в операционных системах других семейств.
Перенаправление обычно осуществляется вставкой специального символа > или < после команды.
Обычно синтаксис выглядит так:
команда1 > файл1 — выполняет команду1, помещая стандартный вывод в файл1;
команда1 < файл1 — выполняет команду1, используя в качестве источника ввода файл1 (вместо клавиатуры).
Для перенаправления содержимого файла в поток ввода нашего приложения воспользуемся командой:
java -jar app.jar < file.txt6 824
Ну все, приплыли бл#ть
Экспериментаторы засунули ИИ в тело робота с целью посмотреть на его поведение и чуть не поплатились за это своей жизнью
Робот начал крушить все вокруг, энтузиастам срочно пришлось уничтожить железку
Об этом рассказали на канале Кораблик. Помимо жутких новостей автор канала делится:
> как зарабатывать на нейросетях от 1000$ в день
> почему опасно экономить на зарядных устройствах
> когда в вашем регионе появляется беспилотное такси
А также для всех подписчиков Chat GPT бесплатный - https://t.me/+Nw9ntpfx665jM2Y0
6 824
⌨️ Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
В Java абстрактный класс и интерфейс представляют два различных механизма для достижения абстракции и обеспечения множественного наследования. Вот основные различия между ними:
1️⃣ Абстрактный класс (Abstract Class):
👉 Может содержать как абстрактные методы (методы без тела), так и обычные методы с реализацией.
👉 Может иметь переменные экземпляра (поля).
👉 Может содержать конструкторы.
👉 Поддерживает одиночное наследование: подкласс можно наследовать только от одного абстрактного класса.
abstract class Animal {
String name;
abstract void makeSound();
void eat() {
System.out.println(name + " is eating.");
}
}
2️⃣ Интерфейс (Interface):
👉 Содержит только абстрактные методы (в Java 8 и выше может содержать методы с реализацией, помеченные ключевым словом default).
👉 Не может иметь переменных экземпляра, кроме переменных, объявленных как static final.
👉 Не содержит конструкторов.
👉 Поддерживает множественное наследование: класс может реализовывать несколько интерфейсов.
interface Animal {
void makeSound();
void eat();
}
Когда использовать:
👉 Используйте абстрактные классы, когда у вас есть общая реализация для нескольких классов и вы хотите предоставить базовый функционал.
👉 Используйте интерфейсы, когда вам нужна поддержка множественного наследования, или когда классы, возможно, уже наследуют от других классов.
Обычно считается хорошей практикой использовать интерфейсы для определения контракта и абстрактные классы для предоставления базовой реализации. В Java 8 и более новых версиях с появлением интерфейсов с методами по умолчанию (default methods), различия стали менее явными, и выбор может зависеть от конкретной ситуации.6 824
Начните изучать Java без лишних рисков.
Записывайтесь на 14-дневный подготовительный курс по Java-разработке. ☕
Всего 990 ₽ и ваши карьерные перспективы станут яснее.
Более 60 уроков, практические задания, помощь наставника, а как итог – собственная программа и четкое понимание, в правильном ли IT-направлении вы двигаетесь.
⏰ Начинаем 25 января, регистрируйтесь уже сейчас!
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
6 824
Автокредит до 8 млн ₽ в Тинькофф. Нужен только паспорт!
Без первоначального взноса, справок и поручителей. Решение от 5 минут. Оформите автокредит онлайн в Тинькофф!
Подать заявку
Финансовые услуги оказывает: АО "Тинькофф Банк", АО "Тинькофф Страхование"
#реклама
tinkoff.ru
О рекламодателе
6 824
⌨️ Как сравнивать элементы enum: equals() или == ?
Можно и так и так. Если посмотреть
реализацию equals() в Enum, то мы там увидим сравнение через ==
public final boolean equals(Object other) {
return this==other;
}
При сравнении через ==, мы застрахуем себя от NullPointerException.6 824
Java Developer — мастхев для любого джависта
За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми словами и научим смеяться с айтишных мемов.
👉🏻 Подписывайся и прокачивай свои навыки
6 824
⌨️ API (Application Programming Interface, интерфейс программирования приложения) — программный интерфейс, то есть описание способов взаимодействия одной компьютерной программы с другими. (В противоположность пользовательскому интерфейсу, используемому для взаимодействия конечного пользователя с программой.) Обычно входит в описание какого-либо интернет-протокола, программного каркаса (фреймворка) или стандарта вызовов функций операционной системы. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.
Проще говоря, это способ взаимодействия какого-то программного кода с набором каких-то программных компонентов, с помощью которых одна компьютерная программа (например, бот или сайт) может использовать другую программу.
Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это набор «ручек», которые доступны пользователю данного ящика и которые он может вертеть и переключать.
Примеры API: Windows API, DirectX (DirectDraw/Direct3D), Vulkan.
