Вложенные и множественные catch блоки
Вложенные catch блоки позволяют обрабатывать несколько типов исключений, которые могут возникнуть в одном блоке try. Это помогает обеспечить точную обработку различных исключений, улучшая устойчивость и надежность кода.
Множественные catch блоки
В Java можно использовать несколько catch блоков для обработки различных типов исключений, возникающих в одном блоке try.
Вложенные блоки try-catch
Вложенные блоки try-catch позволяют обрабатывать исключения на разных уровнях вложенности. Это может быть полезно, когда один блок try-catch находится внутри другого, и каждый из них обрабатывает свои собственные исключения.
Множественные исключения в одном catch блоке
С Java 7 можно обрабатывать несколько типов исключений в одном catch блоке, используя оператор |. Это упрощает код, когда требуется одна и та же обработка для нескольких исключений.
Обработка исключений с полиморфизмом
Можно использовать полиморфизм для обработки исключений. Поскольку все исключения являются подтипами Exception, можно использовать один catch блок для обработки всех исключений, если не требуется специфическая обработка для каждого типа исключения.
#Java #Training #Exception
Вложенные catch блоки позволяют обрабатывать несколько типов исключений, которые могут возникнуть в одном блоке try. Это помогает обеспечить точную обработку различных исключений, улучшая устойчивость и надежность кода.
Множественные catch блоки
В Java можно использовать несколько catch блоков для обработки различных типов исключений, возникающих в одном блоке try.
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index is out of bounds!");
} catch (ArithmeticException e) {
System.out.println("Arithmetic exception occurred!");
} catch (Exception e) {
System.out.println("An unknown error occurred!");
}
}
}
Вложенные блоки try-catch
Вложенные блоки try-catch позволяют обрабатывать исключения на разных уровнях вложенности. Это может быть полезно, когда один блок try-catch находится внутри другого, и каждый из них обрабатывает свои собственные исключения.
public class Main {
public static void main(String[] args) {
try {
try {
int result = divide(10, 0);
} catch (ArithmeticException e) {
System.out.println("Inner catch: Cannot divide by zero!");
}
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Outer catch: Array index is out of bounds!");
}
}
public static int divide(int a, int b) {
return a / b; // Бросает ArithmeticException при делении на ноль
}
}
Множественные исключения в одном catch блоке
С Java 7 можно обрабатывать несколько типов исключений в одном catch блоке, используя оператор |. Это упрощает код, когда требуется одна и та же обработка для нескольких исключений.
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
System.out.println("An error occurred: " + e.getMessage());
}
}
}
Обработка исключений с полиморфизмом
Можно использовать полиморфизм для обработки исключений. Поскольку все исключения являются подтипами Exception, можно использовать один catch блок для обработки всех исключений, если не требуется специфическая обработка для каждого типа исключения.
public class Main {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
}
}
#Java #Training #Exception
Строки: Основные операции
Строка (String) в Java — это последовательность символов. Класс String является неизменяемым (immutable), что означает, что после создания объекта строка не может быть изменена. Любые операции, изменяющие строку, создают новый объект.
Создание строк
Строки могут быть созданы несколькими способами:
Литералы строк:
Конструктор класса String:
Основные операции со строками
Конкатенация строк:
Конкатенация — это процесс объединения двух или более строк.
С оператором +:
С методом concat:
Длина строки:
Метод length() возвращает количество символов в строке.
Извлечение символов:
Метод charAt(int index) возвращает символ по указанному индексу (индексация начинается с нуля).
Извлечение подстроки:
Метод substring(int beginIndex) возвращает подстроку, начиная с указанного индекса до конца строки. Метод substring(int beginIndex, int endIndex) возвращает подстроку от beginIndex до endIndex (не включая endIndex).
Сравнение строк:
С методом equals:
С методом equalsIgnoreCase:
С методом compareTo:
Преобразование регистра:
В верхний регистр:
В нижний регистр:
Замена символов и подстрок:
Замена символа:
Замена подстроки:
Удаление пробелов:
Метод trim удаляет начальные и конечные пробелы:
#Java #Training #String
Строка (String) в Java — это последовательность символов. Класс String является неизменяемым (immutable), что означает, что после создания объекта строка не может быть изменена. Любые операции, изменяющие строку, создают новый объект.
Создание строк
Строки могут быть созданы несколькими способами:
Литералы строк:
String str1 = "Hello, World!";
Конструктор класса String:
String str2 = new String("Hello, World!");
Основные операции со строками
Конкатенация строк:
Конкатенация — это процесс объединения двух или более строк.
С оператором +:
String str1 = "Hello, ";
String str2 = "World!";
String result = str1 + str2; // "Hello, World!"
С методом concat:
String str1 = "Hello, ";
String str2 = "World!";
String result = str1.concat(str2); // "Hello, World!"
Длина строки:
Метод length() возвращает количество символов в строке.
String str = "Hello, World!";
int length = str.length(); // 13
Извлечение символов:
Метод charAt(int index) возвращает символ по указанному индексу (индексация начинается с нуля).
String str = "Hello, World!";
char ch = str.charAt(0); // 'H'
Извлечение подстроки:
Метод substring(int beginIndex) возвращает подстроку, начиная с указанного индекса до конца строки. Метод substring(int beginIndex, int endIndex) возвращает подстроку от beginIndex до endIndex (не включая endIndex).
String str = "Hello, World!";
String subStr1 = str.substring(7); // "World!"
String subStr2 = str.substring(7, 12); // "World"
Сравнение строк:
С методом equals:
String str1 = "Hello";
String str2 = "Hello";
boolean isEqual = str1.equals(str2); // true
С методом equalsIgnoreCase:
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equalsIgnoreCase(str2); // true
С методом compareTo:
String str1 = "Hello";
String str2 = "World";
int result = str1.compareTo(str2); // Отрицательное значение, так как "Hello" меньше "World"
Преобразование регистра:
В верхний регистр:
String str = "Hello, World!";
String upperStr = str.toUpperCase(); // "HELLO, WORLD!"
В нижний регистр:
String str = "Hello, World!";
String lowerStr = str.toLowerCase(); // "hello, world!"
Замена символов и подстрок:
Замена символа:
String str = "Hello, World!";
String replacedStr = str.replace('o', 'a'); // "Hella, Warld!"
Замена подстроки:
String str = "Hello, World!";
String replacedStr = str.replace("World", "Java"); // "Hello, Java!"
Удаление пробелов:
Метод trim удаляет начальные и конечные пробелы:
String str = " Hello, World! ";
String trimmedStr = str.trim(); // "Hello, World!"
#Java #Training #String
Класс String и его методы
Класс String в Java является частью пакета java.lang и предоставляет множество методов для работы со строками. Строки в Java неизменяемы, что означает, что каждый метод, изменяющий строку, возвращает новый объект строки.
Основные методы класса String
Создание строки
Конструкторы класса String:
Получение символа по индексу
Метод charAt(int index):
Сравнение строк
Метод compareTo(String anotherString) и compareToIgnoreCase(String str):
Проверка наличия подстроки
Метод contains(CharSequence s):
Проверка начала и конца строки
Методы startsWith(String prefix) и endsWith(String suffix):
Разделение строки
Метод split(String regex):
Соединение массива строк
Метод join(CharSequence delimiter, CharSequence... elements):
#Java #Training #String
Класс String в Java является частью пакета java.lang и предоставляет множество методов для работы со строками. Строки в Java неизменяемы, что означает, что каждый метод, изменяющий строку, возвращает новый объект строки.
Основные методы класса String
Создание строки
Конструкторы класса String:
String str1 = new String();
String str2 = new String("Hello");
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray);
byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray);
Получение символа по индексу
Метод charAt(int index):
String str = "Hello, World!";
char ch = str.charAt(0); // 'H'
Сравнение строк
Метод compareTo(String anotherString) и compareToIgnoreCase(String str):
String str1 = "Hello";
String str2 = "World";
int result = str1.compareTo(str2); // Отрицательное значение
int resultIgnoreCase = str1.compareToIgnoreCase(str2); // Отрицательное значение
Проверка наличия подстроки
Метод contains(CharSequence s):
String str = "Hello, World!";
boolean containsWorld = str.contains("World"); // true
Проверка начала и конца строки
Методы startsWith(String prefix) и endsWith(String suffix):
String str = "Hello, World!";
boolean startsWithHello = str.startsWith("Hello"); // true
boolean endsWithWorld = str.endsWith("World!"); // true
Разделение строки
Метод split(String regex):
String str = "Hello, World!";
String[] words = str.split(", "); // ["Hello", "World!"]
Соединение массива строк
Метод join(CharSequence delimiter, CharSequence... elements):
String[] words = {"Hello", "World"};
String joinedString = String.join(", ", words); // "Hello, World"
#Java #Training #String
StringBuilder и StringBuffer
StringBuilder и StringBuffer — это классы, предоставляющие изменяемые строки. Они позволяют изменять содержимое строки без создания новых объектов, что делает их более эффективными для частых операций изменения строк.
StringBuilder
Класс StringBuilder был введен в Java 5 и предназначен для создания и изменения строк в однопоточных приложениях. Он не синхронизирован, что делает его быстрее, но не безопасным для использования в многопоточной среде.
Основные методы StringBuilder
Создание объекта StringBuilder:
Добавление текста (метод append):
Вставка текста (метод insert):
Замена текста (метод replace):
Удаление текста (метод delete):
Реверс строки (метод reverse):
Получение длины и емкости:
Получение подстроки (метод substring):
StringBuffer
Класс StringBuffer аналогичен StringBuilder, но синхронизирован, что делает его безопасным для использования в многопоточных средах. Из-за синхронизации StringBuffer несколько медленнее, чем StringBuilder.
Основные методы StringBuffer
Методы класса StringBuffer аналогичны методам класса StringBuilder, поэтому приведем лишь их примеры:
Создание объекта StringBuffer:
Добавление текста (метод append):
Вставка текста (метод insert):
Замена текста (метод replace):
Удаление текста (метод delete):
Реверс строки (метод reverse):
Получение длины и емкости:
Получение подстроки (метод substring):
#Java #Training #String
StringBuilder и StringBuffer — это классы, предоставляющие изменяемые строки. Они позволяют изменять содержимое строки без создания новых объектов, что делает их более эффективными для частых операций изменения строк.
StringBuilder
Класс StringBuilder был введен в Java 5 и предназначен для создания и изменения строк в однопоточных приложениях. Он не синхронизирован, что делает его быстрее, но не безопасным для использования в многопоточной среде.
Основные методы StringBuilder
Создание объекта StringBuilder:
StringBuilder sb = new StringBuilder(); // Создает пустой StringBuilder
StringBuilder sbWithCapacity = new StringBuilder(50); // Создает StringBuilder с начальной емкостью 50 символов
StringBuilder sbWithString = new StringBuilder("Hello"); // Создает StringBuilder с начальной строкой "Hello"
Добавление текста (метод append):
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // sb теперь содержит "Hello, World!"
Вставка текста (метод insert):
StringBuilder sb = new StringBuilder("Hello, !");
sb.insert(7, "World"); // sb теперь содержит "Hello, World!"
Замена текста (метод replace):
StringBuilder sb = new StringBuilder("Hello, World!");
sb.replace(7, 12, "Java"); // sb теперь содержит "Hello, Java!"
Удаление текста (метод delete):
StringBuilder sb = new StringBuilder("Hello, World!");
sb.delete(5, 7); // sb теперь содержит "HelloWorld!"
Реверс строки (метод reverse):
StringBuilder sb = new StringBuilder("Hello");
sb.reverse(); // sb теперь содержит "olleH"
Получение длины и емкости:
StringBuilder sb = new StringBuilder("Hello");
int length = sb.length(); // 5
int capacity = sb.capacity(); // Емкость по умолчанию + длина строки "Hello"
Получение подстроки (метод substring):
StringBuilder sb = new StringBuilder("Hello, World!");
String subStr = sb.substring(7, 12); // "World"
StringBuffer
Класс StringBuffer аналогичен StringBuilder, но синхронизирован, что делает его безопасным для использования в многопоточных средах. Из-за синхронизации StringBuffer несколько медленнее, чем StringBuilder.
Основные методы StringBuffer
Методы класса StringBuffer аналогичны методам класса StringBuilder, поэтому приведем лишь их примеры:
Создание объекта StringBuffer:
StringBuffer sb = new StringBuffer(); // Создает пустой StringBuffer
StringBuffer sbWithCapacity = new StringBuffer(50); // Создает StringBuffer с начальной емкостью 50 символов
StringBuffer sbWithString = new StringBuffer("Hello"); // Создает StringBuffer с начальной строкой "Hello"
Добавление текста (метод append):
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // sb теперь содержит "Hello, World!"
Вставка текста (метод insert):
StringBuffer sb = new StringBuffer("Hello, !");
sb.insert(7, "World"); // sb теперь содержит "Hello, World!"
Замена текста (метод replace):
StringBuffer sb = new StringBuffer("Hello, World!");
sb.replace(7, 12, "Java"); // sb теперь содержит "Hello, Java!"
Удаление текста (метод delete):
StringBuffer sb = new StringBuffer("Hello, World!");
sb.delete(5, 7); // sb теперь содержит "HelloWorld!"
Реверс строки (метод reverse):
StringBuffer sb = new StringBuffer("Hello");
sb.reverse(); // sb теперь содержит "olleH"
Получение длины и емкости:
StringBuffer sb = new StringBuffer("Hello");
int length = sb.length(); // 5
int capacity = sb.capacity(); // Емкость по умолчанию + длина строки "Hello"
Получение подстроки (метод substring):
StringBuffer sb = new StringBuffer("Hello, World!");
String subStr = sb.substring(7, 12); // "World"
#Java #Training #String
Что выведет код?
#Tasks
public class StaticExample {
static int count = 0;
public StaticExample() {
count++;
}
public static int getCount() {
return count;
}
public static void main(String[] args) {
StaticExample obj1 = new StaticExample();
StaticExample obj2 = new StaticExample();
StaticExample obj3 = new StaticExample();
System.out.println(StaticExample.getCount());
}
}
#Tasks
Forwarded from CRYPTON Tech
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между String, StringBuilder и StringBuffer
Строки (String)
Неизменяемость: Объекты класса String неизменяемы. После создания строки, её содержимое не может быть изменено.
Потокобезопасность: String является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.
Пример использования:
StringBuilder
Изменяемость: Объекты класса StringBuilder изменяемы. Можно изменять содержимое объекта без создания новых объектов.
Потокобезопасность: StringBuilder не является потокобезопасным. Он не синхронизирован, что делает его быстрым, но небезопасным для использования в многопоточных средах.
Использование памяти: StringBuilder более эффективен с точки зрения использования памяти при частых изменениях строк, так как не создает множество временных объектов.
Пример использования:
StringBuffer
Изменяемость: Объекты класса StringBuffer изменяемы, как и StringBuilder.
Потокобезопасность: StringBuffer является потокобезопасным. Он синхронизирован, что делает его безопасным для использования в многопоточных средах, но более медленным по сравнению с StringBuilder.
Использование памяти: StringBuffer эффективен с точки зрения использования памяти при частых изменениях строк в многопоточных приложениях.
Пример использования:
Сравнение производительности
String: Создание новых объектов при каждом изменении строки делает String менее эффективным при частых изменениях.
StringBuilder: Не синхронизирован и поэтому быстрее, чем StringBuffer, при работе в однопоточных приложениях.
StringBuffer: Синхронизирован и, следовательно, медленнее, чем StringBuilder, но безопасен для использования в многопоточных приложениях.
Когда использовать каждый из классов?
String: Используйте String, когда строки неизменяемы или изменения редки. Подходит для констант и неизменяемых текстовых данных.
StringBuilder: Используйте StringBuilder, когда строки часто изменяются и безопасность потоков не является проблемой. Подходит для однопоточных приложений.
StringBuffer: Используйте StringBuffer, когда строки часто изменяются и требуется безопасность потоков. Подходит для многопоточных приложений.
Примеры использования:
String:
StringBuilder:
StringBuffer:
#Java #Training #String
Строки (String)
Неизменяемость: Объекты класса String неизменяемы. После создания строки, её содержимое не может быть изменено.
Потокобезопасность: String является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.
Пример использования:
String str = "Hello";
str = str + ", World!"; // Создается новый объект строки
StringBuilder
Изменяемость: Объекты класса StringBuilder изменяемы. Можно изменять содержимое объекта без создания новых объектов.
Потокобезопасность: StringBuilder не является потокобезопасным. Он не синхронизирован, что делает его быстрым, но небезопасным для использования в многопоточных средах.
Использование памяти: StringBuilder более эффективен с точки зрения использования памяти при частых изменениях строк, так как не создает множество временных объектов.
Пример использования:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменяется текущий объект sb
StringBuffer
Изменяемость: Объекты класса StringBuffer изменяемы, как и StringBuilder.
Потокобезопасность: StringBuffer является потокобезопасным. Он синхронизирован, что делает его безопасным для использования в многопоточных средах, но более медленным по сравнению с StringBuilder.
Использование памяти: StringBuffer эффективен с точки зрения использования памяти при частых изменениях строк в многопоточных приложениях.
Пример использования:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменяется текущий объект sb
Сравнение производительности
String: Создание новых объектов при каждом изменении строки делает String менее эффективным при частых изменениях.
StringBuilder: Не синхронизирован и поэтому быстрее, чем StringBuffer, при работе в однопоточных приложениях.
StringBuffer: Синхронизирован и, следовательно, медленнее, чем StringBuilder, но безопасен для использования в многопоточных приложениях.
Когда использовать каждый из классов?
String: Используйте String, когда строки неизменяемы или изменения редки. Подходит для констант и неизменяемых текстовых данных.
StringBuilder: Используйте StringBuilder, когда строки часто изменяются и безопасность потоков не является проблемой. Подходит для однопоточных приложений.
StringBuffer: Используйте StringBuffer, когда строки часто изменяются и требуется безопасность потоков. Подходит для многопоточных приложений.
Примеры использования:
String:
String str = "Hello";
str = str + ", World!"; // Создание нового объекта
StringBuilder:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменение текущего объекта
StringBuffer:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменение текущего объекта
#Java #Training #String
Станем ли мы и дальше организовывать встречи по выходным? И когда Вам удобнее?
Anonymous Poll
53%
Да! Я присоединюсь в любой день!
7%
Да, но мне удобнее по субботам
20%
Да, но мне удобнее по воскресениям
20%
Я не смогу прийти, хотя полностью за!
0%
Ерундой страдаете!
Всем доброго летнего утра и дня!
Рассказывайте, что у Вас нового и интересного!
Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!
Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))
#YouTube
Рассказывайте, что у Вас нового и интересного!
Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!
Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))
#YouTube
Коллекции
Коллекции в Java — это набор классов и интерфейсов, которые предназначены для хранения и управления группами объектов. Коллекции позволяют легко манипулировать группами данных, предоставляя методы для добавления, удаления, поиска и сортировки элементов.
Основные интерфейсы коллекций
Collection
Родительский интерфейс для большинства коллекций.
Основные методы: add(), remove(), size(), contains(), iterator().
List
Упорядоченная коллекция, допускающая дублирование элементов.
Основные реализации: ArrayList, LinkedList, Vector.
Set
Коллекция, не допускающая дублирование элементов.
Основные реализации: HashSet, LinkedHashSet, TreeSet.
Queue
Коллекция, предназначенная для хранения элементов перед их обработкой.
Основные реализации: LinkedList, PriorityQueue.
Map
Коллекция, хранящая пары ключ-значение.
Основные реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
Основные методы коллекций
add(E element): добавляет элемент в коллекцию.
remove(Object o): удаляет элемент из коллекции.
size(): возвращает количество элементов в коллекции.
contains(Object o): проверяет, содержит ли коллекция указанный элемент.
iterator(): возвращает итератор для перебора элементов коллекции.
Итераторы
Итераторы позволяют проходить по элементам коллекции:
Generics в коллекциях
Использование generics позволяет коллекциям работать с определенным типом данных:
Гибкость: коллекции позволяют хранить произвольное количество объектов.
Удобство: коллекции предоставляют мощные методы для работы с данными.
Производительность: коллекции оптимизированы для различных операций, таких как добавление, удаление и поиск элементов.
#Java #Training #Collections
Коллекции в Java — это набор классов и интерфейсов, которые предназначены для хранения и управления группами объектов. Коллекции позволяют легко манипулировать группами данных, предоставляя методы для добавления, удаления, поиска и сортировки элементов.
Основные интерфейсы коллекций
Collection
Родительский интерфейс для большинства коллекций.
Основные методы: add(), remove(), size(), contains(), iterator().
List
Упорядоченная коллекция, допускающая дублирование элементов.
Основные реализации: ArrayList, LinkedList, Vector.
Set
Коллекция, не допускающая дублирование элементов.
Основные реализации: HashSet, LinkedHashSet, TreeSet.
Queue
Коллекция, предназначенная для хранения элементов перед их обработкой.
Основные реализации: LinkedList, PriorityQueue.
Map
Коллекция, хранящая пары ключ-значение.
Основные реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
Основные методы коллекций
add(E element): добавляет элемент в коллекцию.
remove(Object o): удаляет элемент из коллекции.
size(): возвращает количество элементов в коллекции.
contains(Object o): проверяет, содержит ли коллекция указанный элемент.
iterator(): возвращает итератор для перебора элементов коллекции.
Итераторы
Итераторы позволяют проходить по элементам коллекции:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
Generics в коллекциях
Использование generics позволяет коллекциям работать с определенным типом данных:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
// list.add(1); // Ошибка компиляции, так как list предназначен для хранения только строк.
Преимущества использования коллекций
Гибкость: коллекции позволяют хранить произвольное количество объектов.
Удобство: коллекции предоставляют мощные методы для работы с данными.
Производительность: коллекции оптимизированы для различных операций, таких как добавление, удаление и поиск элементов.
#Java #Training #Collections
Варианты ответа:
Anonymous Quiz
33%
[10, 15, 25, 30]
0%
[10, 25, 30]
7%
[10, 15, 20, 25]
60%
[10, 15, 25]
Что выведет код?
#Tasks
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(1, 15);
numbers.set(2, 25);
numbers.remove(3);
System.out.println(numbers);
}
}
#Tasks