this — это ключевое слово, которое ссылается на текущий объект, в контексте которого выполняется метод или конструктор. Оно используется для различения полей класса от параметров метода или конструктора, когда их имена совпадают.
public class Example {
private int value;
public Example(int value) {
this.value = value; // 'this.value' — поле класса, 'value' — параметр конструктора
}
public void setValue(int value) {
this.value = value; // 'this.value' — поле класса, 'value' — параметр метода
}
}
this также может быть использовано для вызова других конструкторов в том же классе.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1
default. Это позволяет добавлять новые методы в интерфейсы без нарушения существующего кода, реализующего интерфейс.
interface MyInterface {
// Обычный метод интерфейса
void existingMethod();
// Метод с реализацией по умолчанию
default void newDefaultMethod() {
System.out.println("Default implementation");
}
}
Классы, реализующие интерфейс, могут переопределять методы по умолчанию, если требуется другая реализация.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍1
ExecutorService — это интерфейс, который упрощает управление потоками. Он позволяет запускать задачи асинхронно, управлять пулом потоков и завершать их выполнение.
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Example {
public static void main(String[] args) {
// Создание пула потоков с фиксированным размером
ExecutorService executor = Executors.newFixedThreadPool(5);
// Отправка задач на выполнение
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
System.out.println("Task executed by " + Thread.currentThread().getName());
});
}
// Завершение работы ExecutorService
executor.shutdown();
}
}
Этот код создает пул из 5 потоков и выполняет 10 задач, распределяя их между потоками.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
i, затем возвращает новое значение.i, затем увеличивает его.Префиксный инкремент полезен, когда требуется сразу использовать увеличенное значение, а постфиксный — когда важно сохранить текущее значение до увеличения.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
public class Person {
// Приватные поля, доступ к которым ограничен
private String name;
private int age;
// Публичные методы для доступа и изменения полей
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥1
Predicate и Function — это функциональные интерфейсы, используемые в лямбда-выражениях и функциональном программировании.
1⃣ Predicate представляет собой условие, возвращающее boolean. Он имеет метод
2⃣ Function преобразует объект одного типа в объект другого. Он имеет метод
✅ Таким образом, Predicate используется для проверки условий, а Function — для преобразования данных.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Java собеседования
test(T t), который принимает объект типа T и возвращает true или false. Пример использования:Predicate<Integer> isEven = x -> x % 2 == 0;
// Проверяет, является ли число четным
apply(T t), который принимает объект типа T и возвращает объект типа R. Пример использования:Function<String, Integer> stringLength = s -> s.length();
// Возвращает длину строки
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
static. Он не имеет доступа к нестатическим полям и методам внешнего класса без создания его экземпляра. Такой класс может быть использован без создания объекта внешнего класса.
class Outer {
static class StaticInner {
// Статический внутренний класс
}
}
Нестатический внутренний класс имеет доступ ко всем полям и методам внешнего класса. Для его создания требуется экземпляр внешнего класса.
class Outer {
class NonStaticInner {
// Нестатический внутренний класс
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4
public enum Day {
// Определение констант перечисления
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println("Today is: " + today);
}
}
Перечисления помогают избежать ошибок, связанных с использованием "магических" чисел или строк.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
Future используется для выполнения задач в отдельных потоках, что позволяет избежать блокировок основного потока.
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Integer> future = executor.submit(() -> {
// Долговременная задача или вычисление
Thread.sleep(2000);
return 42;
});
try {
// Ожидание результата, если задача завершилась
Integer result = future.get(); // может выбросить InterruptedException или ExecutionException
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
// Обработка исключений
} finally {
executor.shutdown();
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
Ключевые аспекты JMM:
- Happens-before: Отношение, гарантирующее, что одна операция видна другой.
- Volatile: Переменные с этим модификатором всегда читаются из основной памяти, а не из кэша потока.
- Synchronized: Блоки и методы с этим ключевым словом обеспечивают взаимное исключение и видимость изменений.
class Example {
private volatile boolean flag = false;
public void toggleFlag() {
flag = !flag; // Изменение видно всем потокам
}
}
В этом примере
volatile гарантирует, что изменения flag будут видны всем потокам сразу. JMM критична для написания корректных многопоточных приложений.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2