Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads
Post #306
5.17K
- 👍 6
- 👀 1
JA @easy_java_ru
Showing posts older than #309 · Back to latest
public class MyClass {
private final Dependency dependency;
public MyClass(Dependency dependency) {
this.dependency = dependency;
}
}public class MyClass {
private Dependency dependency;
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
}public class MyClass {
@Inject
private Dependency dependency;
}public class MyClass implements DependencyInjector {
private Dependency dependency;
@Override
public void injectDependency(Dependency dependency) {
this.dependency = dependency;
}
}final используется для обозначения окончательности: оно может применяться к переменным, методам и классам, придавая им соответствующие свойства неизменяемости, непереопределяемости и ненаследуемости.final int MAX_VALUE = 10;
// MAX_VALUE = 15; // Это вызовет ошибку компиляции
public final void showNumber() {
System.out.println("Номер");
}public final class MyFinalClass {
// Класс не может быть наследован
}final используется для обозначения неизменяемости переменных, непереопределяемости методов и ненаследуемости классов. Оно помогает улучшить безопасность, проектирование и производительность программ.equals() и hashCode() играют важную роль в работе с объектами, особенно когда речь идет о коллекциях, таких как HashSet, HashMap, и Hashtable. Основная идея этих методов заключается в обеспечении правильного сравнения объектов и их корректном распределении внутри структур данных, использующих хеширование.Object, который является суперклассом всех классов, данный метод реализован как сравнение ссылок на объекты, то есть два объекта считаются равными, если они физически указывают на одно и то же место в памяти. Однако, в большинстве случаев необходимо переопределить его, чтобы сравнение объектов производилось по содержимому, а не по их адресам в памяти.equals(), то их хеш-коды тоже должны быть равны. Это необходимо для корректной работы хеш-таблиц, поскольку объекты, считающиеся равными, должны находиться в одной и той же "корзине" или иметь одинаковый индекс хеширования.HashSet, но при попытке его найти, HashSet может не обнаружить его из-за несоответствия между equals() и hashCode().public class Person {
private String name;
private int age;
// Конструктор, геттеры и сеттеры
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}Person считаются равными, если у них одинаковые имя и возраст, и их хеш-коды будут одинаковы при равенстве объектов.equals() и hashCode() заключается в обеспечении возможности сравнения объектов по значению и корректном распределении объектов в структурах данных, использующих хеширование. Важно правильно переопределять эти методы для обеспечения корректной работы коллекций.private, public, protected и без модификатора (по умолчанию). Самым строгим является private, который ограничивает доступ к полю или методу так, что обращаться к нему можно только изнутри класса.public class Account {
private double balance; // Скрытие поля balance
public Account(double initialBalance) {
if (initialBalance > 0) {
balance = initialBalance;
}
}
// Метод для добавления средств на счет
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
// Метод для получения текущего баланса
public double getBalance() {
return balance;
}
}balance сокрыто от прямого доступа извне класса Account, а взаимодействие с ним происходит через методы deposit и getBalance. Это позволяет контролировать корректность данных (например, добавление на счет отрицательной суммы).java.util.stream. Основная цель — упростить работу с коллекциями данных, позволяя выполнять различные операции с элементами последовательности, такие как фильтрация, сортировка, преобразование, агрегирование и другие, без необходимости явно писать циклы и управлять итерациями.filter), преобразование (map), сортировку (sorted) и другие. Они используются для преобразования потока и могут быть объединены в цепочки.forEach). К терминальным операциям относятся collect, reduce, count, findFirst.import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
// Фильтрация и преобразование списка строк в список их длин
List<Integer> lengths = strings.stream() // Создание потока
.filter(s -> s.length() > 5) // Фильтрация строк по длине
.map(String::length) // Преобразование строки в её длину
.collect(Collectors.toList()); // Сбор результатов в список
System.out.println(lengths); // Вывод: [6, 6]
}
}
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
CustomerName будет NULL.INNER JOIN выбирает только совпадающие строки из обеих таблиц. LEFT JOIN выбирает все строки из левой таблицы и дополняет их совпадающими строками из правой таблицы, если таковые имеются.LEFT JOIN могут появиться NULL значения для столбцов из правой таблицы, если совпадений не найдено.INNER JOIN, когда вам нужны строки, которые присутствуют в обеих таблицах. Используйте LEFT JOIN, когда вам нужны все строки из одной таблицы независимо от того, есть ли совпадения в другой таблице.true и false.String, Integer, System и пользовательские классы.List, Map, Serializable.Autoboxing и Unboxing): Автоматическое преобразование между примитивными типами и их соответствующими обертывающими классами. Например, между int и Integer.public boolean equals(Object obj): Определяет, равен ли один объект другому. Стандартная реализация этого метода проверяет равенство ссылок, но его часто переопределяют в пользовательских классах для проверки равенства по значению. public int hashCode(): Возвращает хеш-код объекта, который используется хеш-таблицами, такими как HashMap. Переопределение этого метода важно при переопределении метода equals, чтобы поддерживать общий контракт для методов hashCode и equals. public String toString(): Возвращает строковое представление объекта. Стандартная реализация возвращает строку, состоящую из имени класса объекта, символа @ и его хеш-кода в шестнадцатеричном формате. Часто переопределяется для предоставления более информативного представления объекта. protected Object clone(): Создает и возвращает копию объекта. Для использования этого метода класс должен реализовать интерфейс Cloneable, иначе будет выброшено исключение CloneNotSupportedException. public void finalize(): Вызывается сборщиком мусора перед тем, как объект будет уничтожен. Этот метод может быть использован для освобождения ресурсов, занятых объектом. Однако его использование не рекомендуется, так как работа сборщика мусора не предсказуема. public final Class<?> getClass(): Возвращает объект Class, который представляет класс данного объекта. Это может быть использовано для получения информации о классе во время выполнения. public final void notify(),❓ Что знаешь о классе object ?BeanNameAware,❓ Какой цикл жизни Sprin❓ Какой цикл жизни Sи т.д.: Если бин реализует один из Aware интерфейсов, он вызывает соответствующие методы, передавая экземпляру бина ссылку на контекст, фабрику бинов и т.д.@PostConstruct, интерфейс InitializingBean или атрибут init-method в XML-конфигурации), он вызывает его после того, как все свойства бина были установлены.@PreDestroy, интерфейс DisposableBean или атрибут destroy-method в XML-конфигурации).int имеет обертку Integer, double имеет обертку Double и так далее. Это позволяет использовать примитивные типы в коллекциях, таких как ArrayList, и предоставляет ряд полезных методов.Forwarded from easyoffer