Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции 2025. Java. Белая / Ответы на билеты. Java

.pdf
Скачиваний:
4
Добавлен:
02.01.2026
Размер:
4.52 Mб
Скачать

21. Массивы в Джава, как объектные типы данных, контроль доступа за выход за границы массива

Массивы как объектные типы данных:

1.Наследование от : В Java массивы являются объектами. Любой массив неявно наследуется от класса . Это означает, что переменная типа массив может быть присвоена переменной типа , и на массивах можно вызывать методы класса (например, , ,

, ).

2.Хранение в куче (Heap): Как и другие объекты, массивы создаются в области памяти, называемой кучей. Переменная массива хранит ссылку на этот объект в куче.

3.Поле : У каждого массива есть публичное поле , которое хранит количество элементов в массиве. Это отличает их от, например, , где длина получается через метод .

4.Создание через : Массивы (кроме случая инициализации литералом при объявлении) создаются с помощью оператора , как и другие объекты.

Контроль доступа за выход за границы массива:

Java обеспечивает строгий контроль за границами массива во время выполнения.

Допустимые индексы для массива длиной находятся в диапазоне от до

.

Если программа пытается обратиться к элементу массива с индексом, который меньше или больше либо равен , то JVM выбрасывает исключение .

Это исключение является непроверяемым (unchecked), то есть его не обязательно обрабатывать с помощью , но его возникновение обычно указывает на ошибку в логике программы.

Вывод программы:

Такой контроль помогает выявлять ошибки на ранних стадиях и делает программы на Java более надежными по сравнению с языками типа C/C++, где выход за границы массива может привести к непредсказуемому поведению или повреждению памяти без немедленного сообщения об ошибке.

22. Операции над массивами, просмотр элементов массива, поиск по образцу, сортировка массива, сумма элементов массива

Java предоставляет базовые возможности для работы с массивами, а также утилитарный класс с множеством полезных статических методов.

Просмотр элементов массива: 1. Цикл (традиционный):

2.Цикл (Enhanced for loop): Более удобен, если не нужен индекс элемента.

3.С использованием : Преобразует массив в строковое представление. Удобно для быстрой печати.

Поиск по образцу (поиск элемента):

1. Линейный поиск (ручная реализация):

2. : Эффективный бинарный поиск. Требует,

чтобы массив был предварительно отсортирован.

Если элемент найден, возвращает его индекс.

Если элемент не найден, возвращает , где

— это индекс, по которому элемент мог бы быть вставлен, чтобы сохранить порядок сортировки.

Сортировка массива:

: Сортирует массив на месте (in-place).

Для массивов примитивных типов используется оптимизированный алгоритм быстрой сортировки (Dual-Pivot Quicksort).

Для массивов объектов используется TimSort (гибрид сортировки слиянием и сортировки вставками). Объекты должны реализовывать интерфейс или должен быть предоставлен .

Сумма элементов массива:

Обычно реализуется с помощью цикла.

Пример, объединяющий операции:

23. Операция конкатенации строк в Джава, ее обозначение и использование

Конкатенация строк — это операция объединения двух или более строк в одну новую строку.

Обозначение и использование: 1. Оператор (плюс):

Наиболее распространенный и интуитивно понятный способ конкатенации. Если хотя бы один из операндов оператора является строкой, то другой операнд (если он не строка) будет неявно преобразован в строковое представление, и затем произойдет конкатенация.

Внутри: Когда компилятор Java встречает конкатенацию строк с помощью

(особенно в циклах или при множественных конкатенациях), он часто оптимизирует это, используя или "под капотом" для повышения производительности. Однако, если конкатенация выполняется в цикле многократно, явное использование может быть эффективнее.

2. Метод класса :

Метод добавляет указанную строку в конец текущей строки и возвращает новую строку (поскольку строки в Java неизменяемы).

Метод обычно менее предпочтителен, чем оператор , из-за меньшей читаемости при множественных объединениях и невозможности напрямую конкатенировать с нестроковыми типами без предварительного преобразования.

3.Классы и (для эффективной множественной конкатенации):

Если нужно выполнить много операций конкатенации, особенно в цикле, использование (непотокобезопасный, но быстрее) или (потокобезопасный) является более эффективным, так как они изменяют внутренний буфер символов, не создавая каждый раз новый объект .

4. (Java 8+):

Удобен для объединения коллекции строк или массива строк с использованием указанного разделителя.

5. или (для форматированного вывода):

Позволяют создавать строки по шаблону, вставляя значения на место спецификаторов формата.

Неизменяемость строк () и конкатенация:

Важно помнить, что объекты класса в Java неизменяемы (immutable). Это означает, что любая операция, которая "модифицирует" строку (например, конкатенация), на самом деле создает и возвращает новый объект . Исходная строка остается неизменной.

24. Циклы в Джава, цикл с предусловием, цикл с постусловием, пример записи и использование. Условие окончания цикла.

Циклы используются для многократного выполнения блока кода.

Цикл с предусловием ():

Сначала проверяется условие. Если условие истинно (), выполняется тело цикла. Этот процесс повторяется до тех пор, пока условие не станет ложным ().

Если условие изначально ложно, тело цикла не выполнится ни разу.

Синтаксис:

Условие окончания цикла: Цикл завершается, когда становится .

Пример использования:

Цикл с постусловием ():

Сначала выполняется тело цикла, и только потом проверяется условие.

Тело цикла всегда выполняется хотя бы один раз, даже если условие изначально ложно.

Если условие истинно, цикл повторяется.

Синтаксис:

Условие окончания цикла: Цикл завершается, когда становится после выполнения тела цикла.

Пример использования: