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

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

Open in Telegram

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

Show more
6 824
Subscribers
+824 hours
+27 days
-5030 days
Posts Archive
⌨️ Использование StringBuilder для эффективной конкатенации строк:
public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 10; i++) {
            sb.append("строка ").append(i).append("\n");
        }
        String result = sb.toString();
        System.out.println(result);
    }
}
📌 В этом примере используется StringBuilder для объединения 10 строк "строка i" в одну строку. Это более эффективно, чем использование оператора "+" или String.concat(), особенно при большом количестве операций конкатенации строк. StringBuilder предоставляет изменяемую последовательность символов и позволяет выполнять эффективные операции вставки, удаления и конкатенации строк.

Ответьте на 1 вопрос и книги ваши на 30 дней за 0 рублей Более 200 000 книг и аудиокниг разных жанров в Букмейте. Попробуйте бесплатно! Попробовать #реклама 16+ bookmate.ru О рекламодателе

⌨️ Использование интерфейсов для множественного наследования
// Создание интерфейсов
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.

⌨️ Фишка: Создание итератора для пользовательского класса. Код:
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.

Апартаменты YE’S Primorsky в Санкт-Петербурге В проекте представлены апартаменты площадью от 21 до 128 кв.м. Все юниты в комплексе YE’S сдаются с высококлассной авторской отделкой. Дополнительно возможно приобретение мебели и бытовой техники от известных производителей. Для удобства проживания во всех апартаментах предусмотрена кухонная зона. Особенностью проекта является наличие уникальных двухуровневых апартаментов Penthouse Terrace с панорамными окнами, из которых открывается великолепный вид на город. Забронировать #реклама yesprimorsky.ru О рекламодателе

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]; 
    }
}

Присоединяйтесь к нашему бесплатному курсу и начните увлекательное путешествие в мир Java! Изучайте основы, создавайте програ
Присоединяйтесь к нашему бесплатному курсу и начните увлекательное путешествие в мир Java! Изучайте основы, создавайте программы, разбирайтесь с методами и анализируйте ошибки в коде. Практика, упражнения и проверочные тесты помогут вам освоить навыки программирования. 🎓 Чему вы научитесь: — Создавать программы с использованием основных конструкций языка.  — Разделять код на методы для повторного использования.  — Анализировать ошибки в коде с использованием отладочной печати. 💼 Включено в курс: 29 уроков (видео и/или текст), 35 упражнений в тренажере, 95 проверочных тестов + дополнительные материалы. Вы с нами?😉 Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

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>

Методы и конструкторы в 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.

Открываете счёт — получаете 3000 рублей Бонусом — кэшбэк 10% и баллы за операции по счёту (1 балл = 1 рубль). Всё это — прогр
Открываете счёт — получаете 3000 рублей Бонусом — кэшбэк 10% и баллы за операции по счёту (1 балл = 1 рубль). Всё это — программа лояльности для бизнеса с бесплатным обслуживанием счёта в Альфа-Банке. Перейти на сайт

⌨️ Использование аннотаций. Аннотации позволяют добавлять метаданные к вашему коду, что может быть полезно для документирования, тестирования и других целей. Вот пример использования аннотации:
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. Таким образом, аннотации могут использоваться для предоставления дополнительной информации о вашем коде, что может быть полезно при разработке, тестировании и поддержке проекта.

📖 Java books - огромная библиотека Java книг, актуальных на 2024 год. 🔝 Маст-хэв папка для Java разработчиков: https://t.me/addlist/ZM3J6oFNAnRlNWU6

Считывание файла из стандартного потока ввода Перенаправление ввода-вывода — возможность командной оболочки ряда операционных
Считывание файла из стандартного потока ввода Перенаправление ввода-вывода — возможность командной оболочки ряда операционных систем перенаправлять стандартные потоки в определённое пользователем место, например, в файл. Характерна для Unix-подобных операционных систем, но в разной степени реализована и в операционных системах других семейств. Перенаправление обычно осуществляется вставкой специального символа > или < после команды. Обычно синтаксис выглядит так: команда1 > файл1 — выполняет команду1, помещая стандартный вывод в файл1; команда1 < файл1 — выполняет команду1, используя в качестве источника ввода файл1 (вместо клавиатуры). Для перенаправления содержимого файла в поток ввода нашего приложения воспользуемся командой:

java -jar app.jar < file.txt

Ну все, приплыли бл#ть Экспериментаторы засунули ИИ в тело робота с целью посмотреть на его поведение и чуть не поплатились з
Ну все, приплыли бл#ть Экспериментаторы засунули ИИ в тело робота с целью посмотреть на его поведение и чуть не поплатились за это своей жизнью Робот начал крушить все вокруг, энтузиастам срочно пришлось уничтожить железку Об этом рассказали на канале Кораблик. Помимо жутких новостей автор канала делится: > как зарабатывать на нейросетях от 1000$ в день > почему опасно экономить на зарядных устройствах > когда в вашем регионе появляется беспилотное такси А также для всех подписчиков Chat GPT бесплатный - https://t.me/+Nw9ntpfx665jM2Y0

⌨️ Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс? В 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), различия стали менее явными, и выбор может зависеть от конкретной ситуации.

Начните изучать Java без лишних рисков. Записывайтесь на 14-дневный подготовительный курс по Java-разработке. ☕ Всего 990 ₽ и
Начните изучать Java без лишних рисков. Записывайтесь на 14-дневный подготовительный курс по Java-разработке. ☕ Всего 990 ₽ и ваши карьерные перспективы станут яснее. Более 60 уроков, практические задания, помощь наставника, а как итог – собственная программа и четкое понимание, в правильном ли IT-направлении вы двигаетесь. ⏰ Начинаем 25 января, регистрируйтесь уже сейчас! Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.

Автокредит до 8 млн ₽ в Тинькофф. Нужен только паспорт! Без первоначального взноса, справок и поручителей. Решение от 5 минут
Автокредит до 8 млн ₽ в Тинькофф. Нужен только паспорт! Без первоначального взноса, справок и поручителей. Решение от 5 минут. Оформите автокредит онлайн в Тинькофф! Подать заявку Финансовые услуги оказывает: АО "Тинькофф Банк", АО "Тинькофф Страхование" #реклама tinkoff.ru О рекламодателе

⌨️ Как сравнивать элементы enum: equals() или == ? Можно и так и так. Если посмотреть реализацию equals() в Enum, то мы там увидим сравнение через ==

public final boolean equals(Object other) {
    return this==other;
}
При сравнении через ==, мы застрахуем себя от NullPointerException.

Java Developer — мастхев для любого джависта За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми слов
Java Developer — мастхев для любого джависта За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми словами и научим смеяться с айтишных мемов. 👉🏻 Подписывайся и прокачивай свои навыки

photo content