Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
HashSet и TreeSet — это реализации интерфейса Set, но с разными характеристиками. HashSet хранит элементы в хэш-таблице, обеспечивая вставку и поиск за O(1) в среднем случае. Порядок элементов не гарантируется.
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
TreeSet использует красно-черное дерево для хранения элементов, обеспечивая вставку и поиск за O(log n). Элементы хранятся в отсортированном порядке.
Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
public void methodA() {
methodB(); // Вызов methodB
}
public void methodB() {
methodC(); // Вызов methodC
}
public void methodC() {
throw new RuntimeException("Error in methodC"); // Исключение
}
При возникновении исключения стек вызовов показывает цепочку методов, которые привели к ошибке. Например, если исключение произошло в
methodC, стек будет выглядеть так:
methodC
methodB
methodA
Это помогает определить, где именно возникла ошибка и как программа дошла до этого момента.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
default и static в интерфейсах позволяют добавлять реализацию методов непосредственно в интерфейс. Это расширяет функциональность интерфейсов без нарушения обратной совместимости.
interface Example {
void abstractMethod();
default void defaultMethod() {
System.out.println("Default implementation");
}
static void staticMethod() {
System.out.println("Static method in interface");
}
}
Метод
default предоставляет реализацию по умолчанию, которую можно переопределить в классах. Метод static позволяет добавлять утилитарные методы, которые вызываются через интерфейс, а не через экземпляр класса. Это упрощает расширение интерфейсов и уменьшает дублирование кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
if-else используются для выполнения кода на основе условий. Основные правила включают: - Условие в
if должно быть булевым выражением. - Блок
else не обязателен и выполняется, если условие в if ложно. - Можно использовать
else if для проверки нескольких условий последовательно.
int x = 10;
if (x > 0) {
// выполняется, если x больше 0
} else if (x < 0) {
// выполняется, если x меньше 0
} else {
// выполняется, если x равно 0
}
- Фигурные скобки
{} обязательны, если блок содержит более одной строки кода. - Для улучшения читаемости рекомендуется избегать вложенных
if-else и использовать ранний возврат или тернарные операторы, где это уместно.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
Animal myAnimal = new Dog();
myAnimal.sound(); // Выведет "Bark"
В этом примере метод
sound() переопределен в классе Dog. При вызове myAnimal.sound() выполняется версия метода из класса Dog, несмотря на то, что ссылка имеет тип Animal. Это демонстрирует полиморфизм во время выполнения.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Основные отличия между
1. String
- Неизменяемый (immutable) класс. Любая операция, изменяющая строку, создает новый объект.
- Подходит для хранения строк, которые не требуют частых изменений.
2. StringBuilder
- Изменяемый (mutable) класс. Операции выполняются на том же объекте, что повышает производительность.
- Не потокобезопасный. Используется в однопоточных приложениях.
3. StringBuffer
- Аналогичен
- Медленнее
Пример:
Выбор зависит от требований к изменяемости и потокобезопасности.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Java собеседования
String, StringBuilder и StringBuffer:1. String
- Неизменяемый (immutable) класс. Любая операция, изменяющая строку, создает новый объект.
- Подходит для хранения строк, которые не требуют частых изменений.
2. StringBuilder
- Изменяемый (mutable) класс. Операции выполняются на том же объекте, что повышает производительность.
- Не потокобезопасный. Используется в однопоточных приложениях.
3. StringBuffer
- Аналогичен
StringBuilder, но потокобезопасный. - Медленнее
StringBuilder из-за синхронизации. Пример:
String str = "Hello";
str += " World"; // Создается новый объект
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // Изменяется существующий объект
StringBuffer sbf = new StringBuffer("Hello");
sbf.append(" World"); // Потокобезопасное изменение
Выбор зависит от требований к изменяемости и потокобезопасности.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Throwable:-
getMessage(): Возвращает сообщение об ошибке, которое было передано при создании исключения. -
getCause(): Возвращает причину исключения, если она была указана. -
printStackTrace(): Выводит стек вызовов, который привел к исключению. -
getStackTrace(): Возвращает массив элементов StackTraceElement, представляющих стек вызовов. -
toString(): Возвращает строковое представление исключения, включая его класс и сообщение.
try {
// код, который может вызвать исключение
} catch (Exception e) {
System.out.println(e.getMessage()); // вывод сообщения об ошибке
e.printStackTrace(); // вывод стека вызовов
}
Эти методы помогают анализировать и обрабатывать исключения в приложениях.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
new, за которым следует вызов конструктора класса. Конструктор может быть как по умолчанию, так и пользовательским.
ClassName obj = new ClassName();
Если класс имеет параметризованный конструктор, объект создается с передачей аргументов:
ClassName obj = new ClassName(arg1, arg2);
Пример с классом
Person:
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person person = new Person("Alice", 30);
Объект создается в куче, а переменная
person хранит ссылку на этот объект.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
continue используется в циклах для пропуска текущей итерации и перехода к следующей. Когда встречается continue, выполнение кода внутри цикла прерывается, и управление передается на следующую итерацию.
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // Пропустить итерацию при i == 2
}
System.out.println(i); // Выведет 0, 1, 3, 4
}
Этот оператор полезен, когда нужно пропустить выполнение части кода при определенных условиях.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1