Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java -вопросы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
162.15 Кб
Скачать
  1. Стандартные типы данных. Приведение типов.

Приведение типов расширение не требует преобразования int a, byte b: a = b; b = (byte)a

Дробные типы float и double имеют специальные значения. Они определяются спецификацией IEEE 754:

  • положительная и отрицательная бесконечности (positive/negative infinity);

  • значение "не число", Not-a-Number, сокращенно NaN;

  • положительный и отрицательный нули.

Также в классах Float и Double (это уже объектные типы) определены константы POSITIVE_INFINITY и NEGATIVE_INFINITY

Все дробные значения строго упорядочены. Отрицательная бесконечность меньше любого другого дробного значения, положительная – больше. Значения +0.0 и -0.0 считаются равными, однако некоторые операторы различают их, например, выражение 1.0/0.0 дает положительную бесконечность, а 1.0/-0.0 – отрицательную.

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

Кстати, о передаче параметров в Java.

При передаче параметров базовый тип передается по значению, а объект - по ссылке.

  1. Операторы ветвления и циклы.

  2. Массивы, их особенности в Java.

  3. Принципы объектно-ориентированного программирования.

Абстракция

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.[1]

Инкапсуляция

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.[1]

Наследование

Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.[1]

Полиморфизм

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.[1]

Класс

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Объект

Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение).

Прототип

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

Любой объект в Java порождается только с применением ключевого слова new. Единственное исключение – экземпляры класса String. Записывая любой строковый литерал, мы автоматически порождаем объект этого класса. Поэтому d="AAA"; переадресовала d на новый объект.

Кстати, оператор конкатенации +, результатом которого является строка, также неявно порождает объекты без использования ключевого слова new. То же самое случилось бы с d=d+d;

Еще одним важным свойством класса String является неизменяемость. Породив объект, содержащий некое значение-строку, мы уже не можем изменить данное значение – необходимо создать новый объект.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]