Разное

Классы оболочки java: Классы оболочки в Java • Vertex Academy

Программирование на Java — тест 13

Главная / Программирование / Программирование на Java / Тест 13

Упражнение 1:


Номер 1

Какие методы есть в классе Object?

Ответ:

&nbsp(1) public boolean equals(Object obj)&nbsp

&nbsp(2) public int notify()&nbsp

&nbsp(3) public int hashCode()&nbsp

&nbsp(4) protected Object clone()&nbsp

&nbsp(5) public boolean wait()&nbsp



Номер 2

Какие методы, необходимые для поддержки многопоточности, есть в классе Object?

Ответ:

&nbsp(1) public void synchronize()&nbsp

&nbsp(2) public void notify()&nbsp

&nbsp(3) public void notifyAll()&nbsp

&nbsp(4)

public void wait()&nbsp

&nbsp(5) public void run()&nbsp



Номер 3

Какие методы есть в классе Object?

Ответ:

&nbsp(1) public String toString()&nbsp

&nbsp(2) public boolean notify()&nbsp

&nbsp(3) public final native void wait()&nbsp

&nbsp

(4) public boolean finalize()&nbsp

&nbsp(5) public void wait()&nbsp



Упражнение 2:


Номер 1

Какие утверждения относительно метода equals верны?

Ответ:

&nbsp(1) для любой объектной ссылки x, отличной от null, вызов x. equals(x) возвращает false&nbsp

&nbsp(2) реализация этого метода в классе Object вернет true только в случае равенства по ссылке&nbsp

&nbsp(3) метод equals может быть переопределен любым способом&nbsp

&nbsp(4) для любых объектных ссылок x и y многократные последовательные вызовы x.equals(y) возвращают одно и то же значение&nbsp

&nbsp(5) для любой не равной null объектной ссылки x вызов x.equals(null) должен вернуть значение true&nbsp



Номер 2

Какие утверждения относительно метода equals верны?

Ответ:

&nbsp(1) для любой объектной ссылки x, отличной от null, вызов x. equals(x) возвращает true&nbsp

&nbsp(2) реализация этого метода в классе Object вернет true только в случае равенства по значению&nbsp

&nbsp(3) для любых объектных ссылок x и y, вызов x.equals(y) возвращает true только в том случае, если вызов y.equals(x) возвращает true&nbsp

&nbsp

(4) для любой не равной null объектной ссылки x вызов x.equals(null) должен вернуть значение false&nbsp



Номер 3

Какие утверждения относительно метода hashCode верны?

Ответ:

&nbsp(1) если два объекта идентичны, то есть вызов метода equals(Object) возвращает true, то вызов метода hashCode() у каждого из этих двух объектов должен возвращать одно и то же значение&nbsp

&nbsp(2) реализация этого метода в классе Object вернет true только в случае равенства по ссылке&nbsp

&nbsp(3) метод hashCode() должен возвращать одно и то же значение между разными запусками приложения&nbsp

&nbsp(4) во время одного запуска программы для одного объекта при вызове метода hashCode() должно возвращаться одно и то же значение, если между этими вызовами не были затронуты данные, используемые для проверки объектов на идентичность в методе equals()&nbsp

&nbsp(5) при переопределении метода equals() необходимо переопределить также метод hashCode()&nbsp



Упражнение 3:


Номер 1

В чем особенность класса-обертки для void?

Ответ:

&nbsp(1) никаких отличительных особенностей нет&nbsp

&nbsp(2) этот класс, в отличие от остальных классов-оберток, не реализует интерфейс java. io.Serializable&nbsp

&nbsp(3) он не имеет открытого конструктора. Более того, экземпляр этого класса вообще не может быть получен&nbsp

&nbsp(4) в пакете java.lang отсутствует класс java.lang.Void &nbsp



Номер 2

Для чего нужны классы-обертки?

Ответ:

&nbsp(1) использование классов-оберток ускоряет работу приложения&nbsp

&nbsp(2) при использовании коллекций нельзя использовать значения примитивных типов&nbsp

&nbsp(3) переменная класса-обертки может принимать значения null&nbsp

&nbsp(4) классы-обертки предоставляют набор статических методов для работы с примитивными типами&nbsp



Номер 3

Для каких примитивных типов Java существуют классы-обертки?

Ответ:

&nbsp(1) для всех примитивных типов, включая void&nbsp

&nbsp(2) для всех примитивных типов, кроме void&nbsp

&nbsp(3) только для числовых (byte,int,short ,float,double) и void&nbsp

&nbsp(4) только для char и void&nbsp



Упражнение 4:


Номер 1

Какие утверждения относительно класса Math верны?

Ответ:

&nbsp(1) от этого класса нельзя унаследоваться&nbsp

&nbsp

(2) является абстрактным&nbsp

&nbsp(3) нельзя создать экземпляр этого класса&nbsp

&nbsp(4) содержит только статические методы&nbsp



Номер 2

Какие утверждения относительно класса String верны?

Ответ:

&nbsp(1) от этого класса можно унаследоваться&nbsp

&nbsp(2) является абстрактным&nbsp

&nbsp(3) обладает свойством неизменяемости&nbsp

&nbsp(4) содержит только статические методы&nbsp



Номер 3

Какой класс используется для представления модифицируемых строк?

Ответ:

&nbsp(1) String&nbsp

&nbsp(2) StringTokenizer&nbsp

&nbsp(3) StringBuffer&nbsp

&nbsp(4) StringEditable&nbsp

&nbsp(5) EditableString&nbsp



Упражнение 5:


Номер 1

Какие утверждения относительно класса ClassLoader верны?

Ответ:

&nbsp(1) от этого класса нельзя наследовать&nbsp

&nbsp(2) является неабстрактным&nbsp

&nbsp(3) каждый объект Class содержит ссылку на объект ClassLoader, с помощью которого он был загружен&nbsp

&nbsp(4) можно реализовать свой загрузчик, унаследовав его от ClassLoader&nbsp



Номер 2

Какой класс позволяет приложению взаимодействовать со средой исполнения?

Ответ:

&nbsp(1) ClassLoader&nbsp

&nbsp(2) Class&nbsp

&nbsp(3) System&nbsp

&nbsp(4) Runtime&nbsp

&nbsp(5) ни один из перечисленных&nbsp



Номер 3

Какой класс отвечает за загрузку описания классов в память JVM?

Ответ:

&nbsp(1) Class&nbsp

&nbsp(2) ClassLoader&nbsp

&nbsp(3) System&nbsp

&nbsp(4) Runtime&nbsp

&nbsp(5) ни один из перечисленных&nbsp



Упражнение 6:


Номер 1

Какие утверждения относительно класса Runtime верны?

Ответ:

&nbsp(1) каждому приложению Java сопоставляется экземпляр класса Runtime&nbsp

&nbsp(2) позволяет загружать классы в память&nbsp

&nbsp(3) позволяет получить данные о количестве памяти, выделенной JVM&nbsp

&nbsp(4) позволяет загружать библиотеки&nbsp

&nbsp(5) объект этого класса можно получить с помощью метода Runtime. getInstance()&nbsp



Номер 2

Какие утверждения относительно класса System верны?

Ответ:

&nbsp(1) предоставляет доступ к стандартному выводу, доступному через переменную System.out&nbsp

&nbsp(2) позволяет перенаправлять стандартный ввод&nbsp

&nbsp(3) позволяет получить все свойства, определенные в системе&nbsp

&nbsp(4) не позволяет перенаправлять поток вывода сообщений об ошибках&nbsp

&nbsp(5) некоторые методы этого класса позволяют приложению проверять, является ли операция допустимой в данном контексте&nbsp



Номер 3

Какие утверждения относительно класса Process верны?

Ответ:

&nbsp(1) является абстрактным классом&nbsp

&nbsp(2) не позволяет уничтожить запущенный процесс&nbsp

&nbsp(3) объекты этого класса получаются вызовом метода exec() у объекта Runtime, запускающего отдельный процесс&nbsp

&nbsp(4) объект этого класса может использоваться для управления процессом и получения информации о нем&nbsp



Упражнение 7:


Номер 1

Классы каких базовых исключений определены в пакете java. lang?
            

Ответ:

&nbsp(1) FatalError&nbsp

&nbsp(2) Error&nbsp

&nbsp(3) Exception&nbsp

&nbsp(4) SystemException&nbsp



Номер 2

Классы каких базовых исключений определены в пакете java.lang?
            

Ответ:

&nbsp(1) RunnableException&nbsp

&nbsp(2) Error&nbsp

&nbsp(3) Fatal&nbsp

&nbsp(4) Exception&nbsp

&nbsp(5) Throwable&nbsp



Номер 3

Какие классы, помогающие взаимодействовать с программным окружением, определены в пакете java. lang?

Ответ:

&nbsp(1) Process&nbsp

&nbsp(2) Thread&nbsp

&nbsp(3) RunnableException&nbsp

&nbsp(4) SecurityManager&nbsp

&nbsp(5) Class&nbsp



Упражнение 8:


Номер 1

Какие классы и интерфейсы, необходимые для поддержки многопоточности, определены в пакете java. lang?

Ответ:

&nbsp(1) Thread&nbsp

&nbsp(2) Runnable&nbsp

&nbsp(3) ThreadIterator&nbsp

&nbsp(4) ThreadException&nbsp

&nbsp(5) RunnableException&nbsp



Номер 2

Какие классы, необходимые для поддержки многопоточности, определены в пакете java. lang?

Ответ:

&nbsp(1) Process&nbsp

&nbsp(2) Thread&nbsp

&nbsp(3) RunnableException&nbsp

&nbsp(4) ThreadGroup&nbsp

&nbsp(5) RuntimeException&nbsp



Номер 3

Какие классы служат для представления примитивных значений в виде объектов?

Ответ:

&nbsp(1) Short&nbsp

&nbsp(2) String&nbsp

&nbsp(3) Integer&nbsp

&nbsp(4) Long&nbsp

&nbsp(5) Void&nbsp



Главная / Программирование / Программирование на Java / Тест 13

Базовые и утилитные классы Java

Слайд 1

Описание слайда:

Базовые и утилитные классы Java


Слайд 2

Описание слайда:

План лекции Пакет java. lang и базовые классы Классы Class и Object Классы-обертки примитивных типов Класс Math Классы String и StringBuffer Пакет java.util и его классы Коллекции


Слайд 3

Описание слайда:

Пакет java.lang Импортируется по умолчанию (неявно) Класс Class Класс Object Классы-обертки примитивных типов Класс Math Классы String и StringBuffer Класс Throwable, базовый класс исключений Классы Thread и ThreadGroup Прочие фундаментальные типы System, Runtime, Process, ClassLoader, SecurityManager, Compiler, Cloneable, Comparable


Слайд 4

Описание слайда:

Класс Class Является метаклассом для всех классов Экземпляры содержат описания классов, загружаемых JVM Не имеет доступного конструктора Содержит методы для работы с классами и их методами Лежит в основе т. н. «рефлексии»


Слайд 5

Описание слайда:

Класс Class При загрузке JVM файла .class создается объект класса Class При создании любого объекта создаются Сам создаваемый объект Объект типа Class описания класса объекта Объекты типа Class описания классов-предков Объект типа Class описания класса Class Метод forName(String name) получения объекта описания типа Class по имени класса


Слайд 6

Описание слайда:

Класс Object Является суперклассом для всех классов (включая массивы) Переменная этого типа может ссылаться на любой объект (но не на переменную примитивного типа) Его методы наследуются всеми классами Реализует базовые операции с объектами


Слайд 7

Описание слайда:

Методы класса Object Получение строкового представления объекта String toString() Получение ссылки на описание класса объекта final Class getClass() Клонирование объекта (получение копии) protected Object clone() Проверка равенства объектов boolean equals(Object obj) Получение хэш-кода объекта int hashCode() Метод завершения работы с объектом protected void finalize() Методы обслуживания блокировок в многопоточных приложениях void wait(. ..), void notify(), void notifyAll()


Слайд 8

Описание слайда:

Клонирование объектов Считается, что результатом клонирования является копия объекта Массивы поддерживают операцию клонирования В классе Object метод clone() является защищенным Метод clone() реализуется в конкретном классе Никто не гарантирует того, что результатом его выполнения будет копия объекта, и даже того, что новый объект будет того же класса Однако существует ряд соглашений, регламентирующих реализацию метода clone()


Слайд 9

Описание слайда:

Простое клонирование объектов, ряд соглашений Класс должен переопределять метод clone() Класс должен реализовывать интерфейс-маркер Cloneable Результат клонирования должен быть получен вызовом super. clone() Результатом работы метода clone() должна быть точная копия объекта


Слайд 10

Описание слайда:

Особенности клонирования В результате клонирования скопировалась ссылка на объект a, но не объект, с которым связана ссылка При использовании результатов клонирования необходимо явное приведение типа Начиная с Java5 для массивов можно не выполнять явное приведение типа, но только для массивов


Слайд 11

Описание слайда:

Глубокое клонирование объектов Простого клонирования может быть недостаточно, если объект содержит ссылки на агрегированные объекты В этом случае после процедуры простого клонирования необходимо создать и их копии тоже


Слайд 12

Описание слайда:

Равенство объектов Простого сравнения ссылок недостаточно для сравнения содержимого объектов Для сравнения объектов по их содержимому применяется метод equals(Object obj) В классе Object метод реализован таким образом, что возвращает true только при сравнении с самим объектом Конкретный класс может переопределять метод equals(Object obj)


Слайд 13

Описание слайда:

Равенство объектов Метод equals(. ..) должен проверять эквивалентность объектов с точки зрения бизнес-логики Отношение, задаваемое на множестве объектов этим методом, должно обладать следующими свойствами: рефлективность (x.equals(x)) симметричность (x.equals(y) и y.equals(x)) транзитивность (x, y, z) непротиворечивость (многократное x.equals(y)) сравнение с null (false)


Слайд 14

Описание слайда:

Равенство объектов


Слайд 15

Описание слайда:

Хэш-код объекта Метод int hashCode() предназначен для получения хэш-кода – числа, используемого для быстрого сравнения объектов Если объект не изменял свое состояние, то значение хэш-кода не должно изменяться Если два объекта эквивалентны (с точки зрения метода equals()), то хэш-коды объектов должны быть одинаковыми Если хэш-коды объектов одинаковы, то это еще не значит, что объекты эквивалентны Изменение реализации в классе метода equals() влечет за собой изменение реализации метода hashCode()


Слайд 16

Описание слайда:

Хэш-код объекта


Слайд 17

Описание слайда:

Классы-обертки примитивных типов Значения примитивных типов не могут быть непосредственно использованы в контексте, где требуется ссылка Ссылочное представление значений примитивных типов является основной задачей т. н. классов-оберток Экземпляр такого класса хранит внутри значение примитивного типа и предоставляет доступ к этому значению


Слайд 18

Описание слайда:

Классы-обертки примитивных типов Boolean Byte Character Double Float


Слайд 19

Описание слайда:

Задачи классов-оберток примитивных типов Ссылочное представление значений примитивных типов Хранение вспомогательных функций для работы со значениями примитивных типов Представление примитивных типов и их значений в механизмах рефлексии


Слайд 20

Описание слайда:

Наполнение классов-оберток Константы типов Integer. MAX_VALUE, Double.NaN Конструкторы: по значению и строке Float(float value), Float(String s) Методы получения значения aBoolean.booleanValue(), aFloat.floatValue() Методы преобразования в значение примитивного типа Integer.parseInt(String s), aFloat.byteValue()() Методы преобразования в объект класса-обертки Integer.valueOf(String s, int radix) Методы проверки состояния и вида значения aWrapedValue.compareTo(…), aDouble.isInfinite() Специальные методы, обусловленные спецификой типа Double.longBitsToDouble(…), Integer.toHexString()


Слайд 21

Описание слайда:

Классы-обертки примитивных типов Каждому примитивному типу сопоставлен соответствующий класс-обертка Все классы-обертки имеют публичный конструктор (кроме класса Void) Объекты классов-оберток могут сравниваться между собой методом equals() Значения примитивных типов можно получить из объектов вызовом методов <type>Value() Классы-обертки предоставляют статические методы работы с примитивными типами


Слайд 22

Описание слайда:

Класс Math Предназначен для выполнения простых математических операций Не имеет явного конструктора Является final-классом Все методы являются статическими Не гарантирует повторяемости результатов на различных платформах (в отличие от класса StrictMath)


Слайд 23

Описание слайда:

Наполнение класса Math Константы E и PI Функции взятия модуля abs() Функции максимума и минимума max(), min() Функции округления round(), rint() Функции ближайшего целого ceil(), floor() Тригонометрические функции sin(), cos(), tan(), asin(), acos(), atan() Функции перевода toDegrees(), toRadians(), atan2() Функции степени pow(), exp(), log(), sqrt() Случайное значение random() (см. класс java.util.Random)


Слайд 24

Описание слайда:

Хранение строк byte [] Массив байт кодов char [] Массив Unicode-символов String Неизменяемая строка StringBuffer Изменяемая строка


Слайд 25

Описание слайда:

Работа со строками. Класс String Значение объекта класса String не может быть изменено без порождения нового объекта Реализует операции для строки в целом Экземпляры этого класса можно создавать без ключевого слова new Каждый строковый литерал порождает экземпляр String Значение любого типа может быть приведено к строке


Слайд 26

Описание слайда:

Наполнение класса String Строковое представление valueOf(), copyValueOf() Преобразование типов getBytes(), getChars(…), toCharArray(), toString() Сравнение compareTo(…), compareToIgnoreCase(…), contentEquals(…), equals(…), equalsIgnoreCase(…), intern() Выделение элементов charAt(…), substring(…), split(…) Операции над всей строкой concat(…), replace(…), replaceAll(…), replaceFirst(…), toLowerCase(), toUpperCase(), trim() Проверка содержимого строки endsWith(…), indexOf(…), lastIndexOf(…), length(), matches(…), regionMatches(…), startsWith(…)


Слайд 27

Описание слайда:

Работа со строками. Класс StringBuffer Реализует методы модификации строки без порождения нового объекта Реализует операции с элементами строки по отдельности Используется по умолчанию при конкатенации строк Для хранения строк использует буфер переменного объема


Слайд 28

Описание слайда:

Наполнение класса StringBuffer Добавление фрагментов append(…), insert(…) Поиск вхождений indexOf(…), lastIndexOf(…) Извлечение фрагментов charAt(…), getChars(…), reverse(), substring(…) Модификация строки delete(…), deleteCharAt(…), replace(…), setCharAt(…), setLength(…) Состояние буфера length(), capacity(), ensureCapacity(…), trimToSize()


Слайд 29

Описание слайда:

Конкатенация строк Не стоит злоупотреблять автоматической конкатенацией Особенно если для вас критична память и скорость выполнения программы


Слайд 30

Описание слайда:

Системные классы ClassLoader – абстрактный класс, необходим для загрузки описания типов (объектов Class) в память JVM SecurityManager – реализует методы проверки допустимости запрашиваемой операции System – содержит набор полезных статических полей и методов Runtime – позволяет приложению взаимодействовать со средой исполнения Process – представляет интерфейс взаимодействия с внешней программой, запущенной через Runtime


Слайд 31

Описание слайда:

Пакет java. util Классы для работы со временем Классы для работы с локализацией Классы для работы с массивами Классы и интерфейсы коллекций Прочие вспомогательные классы и интерфейсы


Слайд 32

Описание слайда:

Классы работы со временем Date Отражает дату и время с точностью до миллисекунд. Не рекомендуется к использованию Calendar и сопутствующие Содержит константы и методы для работы с датой и временем с учетом особенностей локализации Timer Позволяет создавать задания для более позднего запуска (с использованием потоков инструкций)


Слайд 33

Описание слайда:

Методы класса Calendar Установка значения поля календаря public void set(int field, int value) Добавляет смещение к текущей величине поля public abstract void add(int field, int amount) Добавляет смещение к величине поля, причем не производит изменения старших полей public abstract void roll(int field, boolean up)


Слайд 34

Описание слайда:

Методы класса Calendar


Слайд 35

Описание слайда:

Классы для работы с локализацией Locale Содержит константы и методы для работы с языками и особенностями регионов TimeZone Содержит методы для работы с часовыми поясами SimpleTimeZone Реализует TimeZone для Григорианского календаря


Слайд 36

Описание слайда:

java. util.Random Экземпляр класса является отдельным генератором псевдослучайных чисел (ГПСЧ) Различные ГПСЧ позволяют формировать некоррелированные последовательности «Основание» имеет размерность 48bit Методы получения ПСЧ: nextBoolean(), nextByte(), nextDouble(), nextFloat(), nextInt(), nextLong(), nextGaussian() Метод настройки setSeed(long seed)


Слайд 37

Описание слайда:

Регулярные выражения Позволяют сопоставлять текст с шаблоном, выполнять замену текста Операции осуществляются с помощью универсальных символов, которые специальным образом интерпретируются Используются в большом количестве языков программирования


Слайд 38

Описание слайда:

Пакет java.util.regex Класс Pattern Реализует шаблоны регулярных выражений. Позволяет составлять сложные шаблоны и разделять строки на элементы Класс Matcher Реализует поиск элементов, соответствующих шаблону, в строках и проверку строк на соответствие шаблону PatternSyntaxException указывает на синтаксическую ошибку в выражении


Слайд 39

Описание слайда:

Коллекции Коллекции (контейнеры) – хранилища, поддерживающие разнообразные способы накопления и упорядочивания объектов с целью обеспечения возможностей эффективного доступа к ним В Java коллекции разделены на интерфейсы, абстрагирующие общие принципы работы с коллекциями, и классы, реализующие конкретную функциональность Не все методы, заявленные в интерфейсах, должны в действительности реализовываться классами. Часть методов может просто выбрасывать исключение UnsupportedOperationException


Слайд 40

Описание слайда:

Интерфейс Collection Образующий в иерархии типов коллекций Определяет базовую функциональность любой коллекции Подразумевает добавление, удаление, выбор элементов в коллекции Допускает дубликаты и пустые элементы Абстрактный класс AbstractCollection определяет реализацию ряда методов


Слайд 41

Описание слайда:

Методы интерфейса Collection Добавление элементов boolean add(Object o), boolean addAll(Collection c) Исключение элементов boolean remove(Object o), boolean removeAll(Collection c), boolean retainAll(Collection c), void clear() Состояние коллекции boolean contains(Object o), boolean containsAll(Collection c), boolean isEmpty(), int size() Вспомогательные методы Object[] toArray(), Iterator iterator()


Слайд 42

Описание слайда:

Интерфейс Set Расширяет интерфейс Collection Не допускает наличие дубликатов Разрешает только одну ссылки null Объекты коллекции должны корректно реализовывать метод equals() Расширение SortedSet требует упорядоченности по значениям набора Абстрактный класс AbstractSet определяет реализацию ряда методов


Слайд 43

Описание слайда:

Интерфейс List Расширяет интерфейс Collection Подразумевает хранение упорядоченной последовательности объектов Порядок хранения определяется порядком добавления элементов Позволяет обращаться к элементам по их номеру в коллекции Абстрактный класс AbstractList определяет реализацию ряда методов


Слайд 44

Описание слайда:

Специальные методы интерфейса List Адресное добавление void add(int index, Object o), boolean addAll(int index, Collection c) Адресные операции с элементами Object get(int index), Object set(int index, Object o), Object remove(int index) Операции поиска int indexOf(Object o), int lastIndexOf(Object o) Специальные операции List subList(int from, int to), ListIterator listIterator()


Слайд 45

Описание слайда:

Интерфейс Iterator Позволяет работать с любой коллекцией как с перебираемым набором элементов Метод Iteraror iterator() вызывается для объекта коллекции Проверка наличия следующего объекта коллекции boolean hasNext() Следующий объект Object next() Исключение объекта void remove()


Слайд 46

Описание слайда:

Интерфейс Map Не расширяет интерфейс Collection Подразумевает хранение набора объектов парами ключ/значение Ключи должны быть уникальными Порядок следования пар не определен Расширение SortedMap требует упорядоченности по значениям ключей Абстрактный класс AbstractMap определяет реализацию ряда методов


Слайд 47

Описание слайда:

Методы интерфейса Map Добавление объектов Object put(Object key, Object value), void putAll(Map t) Исключение объектов Object remove(Object key), void clear() Доступ к объекту по ключу Object get(Object key) Состояние boolean containsValue(Object value), boolean containsKey(Object key), int size(), boolean isEmpty() Преобразование типа Set entrySet(), Set keySet(), Collection values()


Слайд 48

Описание слайда:

Иерархия интерфейсов коллекций


Слайд 49

Описание слайда:

Иерархия абстрактных классов коллекций


Слайд 50

Описание слайда:

Классы коллекций Динамические массивы ArrayList (List), Vector (List) Двухсвязный список LinkedList (List) Упорядоченные множество и карта TreeSet (Set), TreeMap (SortedMap) Ряд других классов HashMap (Map), HashSet (Set), …


Слайд 51

Описание слайда:

Класс java. util.ArrayList Расширяет класс AbstractList Динамически расширяется при добавлении новых элементов в коллекцию Методы доступа к элементам не синхронизированы Рекомендуется для использования при работе с коллекцией из одной нити


Слайд 52

Описание слайда:

Класс java.util.ArrayList


Слайд 53

Описание слайда:

Класс java.util.LinkedList Реализует интерфейс List Является реализацией двусвязного списка Добавлены дополнительные методы доступа, добавления и удаления элементов в начало и конец списка Удобен для организации стека


Слайд 54

Описание слайда:

Класс java.util.LinkedList


Слайд 55

Описание слайда:

Класс java. util.Hashtable Реализует интерфейс Map и расширяет устаревший класс Dictionary Хранит объекты в виде пар ключ/значение Не позволяет null в ключах и значениях Использует алгоритм хэширования для увеличения скорости доступа к данным Число key.hashCode() % array.length используется для определения индекса элемента Синхронизированный доступ


Слайд 56

Описание слайда:

Класс java.util.HashMap Расширяет класс AbstractMap Похож на класс Hashtable Хранит объекты в виде пар ключ/значение Для одного ключа и элементов допускаются значения типа null Порядок хранения элементов не совпадает с порядком их добавления и может меняться Обеспечивает постоянное время доступа для операций get() и put()


Слайд 57

Описание слайда:

Класс java. util.HashMap


Слайд 58

Описание слайда:

Класс java.util.TreeMap реализует SortedMap расширяет AbstractMap содержит ключи в порядке возрастания запрещено применение null для ключей при использовании дубликатов ключей ссылка на предыдущий объект теряется


Слайд 59

Описание слайда:

Класс Collections Утилитный класс Содержит ряд статических методов прикладного назначения, позволяющих оперировать объектами коллекций Группы методов: Создание и поддержка оберток коллекций Прочие прикладные методы


Слайд 60

Описание слайда:

Обертки коллекций Синхронизированные Обеспечивают механизмы синхронизации доступа для многопоточных приложений List synchronizedList(List l), … Неизменяемые Запрещают использование методов модификации значений Map unmodifiableMap(Map m), …


Слайд 61

Описание слайда:

Прикладные методы Методы поиска минимума и максимума min(), max() Работа со списками reverse(), shuffle(), fill(), copy(), nCopies() Сортировка списков sort() Поиск элементов в списке binarySearch() Прочие прикладные методы


Слайд 62

Описание слайда:

java. util.Arrays Содержит статические методы для работы с массивами Представление массива списком List asList(Object[] a) Поиск элемента в массиве int binarySearch(…[] a, … key) Сравнение массивов по элементам boolean equals(…[] a1, …[] a2) Заполнение массива элементами fill(…[] a, int from, int to, … val) Сортировка массива sort(…[] a, int from, int to)


Слайд 63

Описание слайда:

Спасибо за внимание!


Слайд 64

Описание слайда:

Дополнительные источники Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс», 2001. – 624 с. Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с. Хорстманн, К. Java 2. Библиотека профессионала. Том 1. Основы [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010 г. – 816 с. Хорстманн, К. Java 2. Библиотека профессионала. Том 2. Тонкости программирования [Текст] / Кей Хорстманн, Гари Корнелл. – М. : Издательский дом «Вильямс», 2010 г. – 992 с. Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с. JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011. JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.


java — Когда использовать класс-оболочку и примитивный тип

Когда следует использовать класс-оболочку, а не примитивные типы? Или при каких обстоятельствах я должен выбирать между типами оболочек/примитивов?

  • Java
  • оболочка
  • примитивные типы

1

Другие упомянули, что некоторые конструкции, такие как Коллекции , требуют объектов и что объекты имеют больше накладных расходов, чем их примитивные аналоги (память и упаковка).

Другое соображение:

Может быть удобно инициализировать объекты null или отправить null параметры в метод/конструктор, чтобы указать состояние или функцию. Это невозможно сделать с примитивами.

Многие программисты инициализируют числа 0 (по умолчанию) или -1, чтобы обозначить это, но в зависимости от сценария это может быть неверным или вводящим в заблуждение.

Это также установит сцену для NullPointerException , когда что-то используется неправильно, что намного удобнее для программиста, чем какая-то произвольная ошибка в будущем.

6

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

8

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

1.

 класс Лицо {
   номер SSN; // инициализируется нулем по умолчанию
}
 

2.

 класс PersonBetter {
  целочисленный SSN; // инициализируется нулем по умолчанию
}
 

В первом случае нельзя оставить значение SSN неинициализированным. Это может повредить, если вы не проверяете, было ли установлено значение, прежде чем пытаться его использовать.

Во втором случае вы можете оставить SSN инициализированным с нулевым значением. Это может привести к NullPointerException, но это лучше, чем неосознанно вставлять значения по умолчанию (ноль) в качестве SSN в базу данных всякий раз, когда вы пытаетесь использовать его без инициализации поля SSN.

1

Я бы использовал типы оболочки только в случае необходимости.

При их использовании вы не получите многого, кроме того, что они Объекты .

Кроме того, вы теряете накладные расходы на использование памяти и время, затрачиваемое на упаковку/распаковку.

2

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

Я создал класс обслуживания, который имел переменную типа long

  1. Если переменная имеет тип long — если она не инициализирована, ей будет присвоено значение 0 — это будет запутывать пользователя при отображении в графическом интерфейсе
  2. Если переменная имеет тип Long — если она не инициализирована, ей будет присвоено значение null — это нулевое значение не будет отображаться в графическом интерфейсе.

Это относится и к Boolean , где значения могут быть более запутанными, когда мы используем примитив boolean (поскольку значение по умолчанию равно false).

Коллекции являются типичным случаем для простых объектов-оболочек Java. Однако вы можете подумать о том, чтобы придать Wrapper более конкретное значение в коде (объект значения).

ИМХО почти всегда полезно использовать объекты-значения, когда речь идет о читабельности и сопровождении кода. Обёртывание простых структур данных внутри объектов, когда у них есть определённые обязанности, часто упрощает код. Это то, что очень важно в предметно-ориентированном проектировании.

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

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

примитивные типы, один использует оператор ==, но для оболочки предпочтительным выбором является вызов метода equals().

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

Если вы хотите использовать коллекции, вы должны использовать классы-оболочки.

Примитивные типы используются для массивов. Кроме того, для представления данных, не имеющих поведения, например, счетчика или логического условия.

Начиная с автоупаковки граница «когда использовать примитив или оболочку» стала довольно размытой.

Но помните, обертки — это объекты, поэтому вы получаете все причудливые функции Java. Например, вы можете использовать рефлексию для создания объектов Integer, но не значений int. Классы-оболочки также имеют такие методы, как valueOf.

5

Когда использовать примитивные типы

  • При выполнении большого объема вычислений примитивные типы всегда быстрее — у них намного меньше накладных расходов.
  • Если вы не хотите, чтобы переменная могла иметь значение null.
  • Если вы не хотите, чтобы значение по умолчанию было нулевым.
  • Если метод должен возвращать значение

Когда использовать класс оболочки

  • При использовании коллекций или обобщений — обязательно
  • Если вы хотите MIN_SIZE или MAX_SIZE типа.
  • Если вы хотите, чтобы переменная могла принимать значение null.
  • Если вы хотите, чтобы значение по умолчанию было нулевым.
  • Если иногда метод может возвращать нулевое значение.

с https://medium.com/@bpnorlander/java-understanding-primitive-types-and-wrapper-objects-a6798fb2afe9

Если вы хотите создать тип значения. Что-то вроде ProductSKU или AirportCode.

Когда примитивный тип (строка в моих примерах) определяет равенство, вы захотите переопределить равенство.

3

Примитивные значения в Java не являются объектами. Чтобы манипулировать этими значениями как объектами, пакет java.lang предоставляет класс-оболочку для каждого примитивного типа данных.

Все классы Wrapper являются окончательными. Объект всех классов-оболочек, которые могут быть инициированы, являются неизменяемыми, что означает, что значение в объекте-оболочке не может быть изменено.

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

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

JDK 19 Документация — Начало

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *