Программирование на Java — тест 13
Главная / Программирование / Программирование на Java / Тест 13
Упражнение 1:
Номер 1
Какие методы есть в классе Object
?
Ответ:
 (1) public boolean equals(Object obj)
 
 (2) public int notify()
 
 (3) public int hashCode()
 
 (4) protected Object clone()
 
 (5) public boolean wait()
 
Номер 2
Какие методы, необходимые для поддержки многопоточности, есть в классе Object
?
Ответ:
 (1) public void synchronize()
 
 (2) public void notify()
 
public void notifyAll()
   (4) public void wait()
 
 (5) public void run()
 
Номер 3
Какие методы есть в классе Object
?
Ответ:
public String toString()
   (2) public boolean notify()
 
 (3) public final native void wait()
 
 (4) public boolean finalize()
 
 public void wait()
 
Упражнение 2:
Номер 1
Какие утверждения относительно метода equals
верны?
Ответ:
 (1) для любой объектной ссылки x
, отличной от null
, вызов x. equals(x)
возвращает false
 
 Object
вернет true
только в случае равенства по ссылке 
 (3) метод equals
может быть переопределен любым способом 
 (4) для любых объектных ссылок x
и y
многократные последовательные вызовы x.equals(y)
возвращают одно и то же значение 
 null
объектной ссылки x
вызов x.equals(null)
должен вернуть значение true
 
Номер 2
Какие утверждения относительно метода equals
верны?
Ответ:
 (1) для любой объектной ссылки x
, отличной от null
, вызов x. equals(x)
возвращает true
 
 (2) реализация этого метода в классе Object
вернет true
только в случае равенства по значению 
 (3) для любых объектных ссылок x
и y
, вызов x.equals(y)
возвращает true
только в том случае, если вызов y.equals(x)
возвращает true
 
 (4) для любой не равной
объектной ссылки x
вызов x.equals(null)
должен вернуть значение false
 
Номер 3
Какие утверждения относительно метода hashCode
верны?
Ответ:
 (1) если два объекта идентичны, то есть вызов метода equals(Object)
возвращает true
, то вызов метода hashCode()
у каждого из этих двух объектов должен возвращать одно и то же значение 
 (2) реализация этого метода в классе Object
вернет true
только в случае равенства по ссылке 
 (3) метод hashCode()
должен возвращать одно и то же значение между разными запусками приложения 
 (4) во время одного запуска программы для одного объекта при вызове метода hashCode()
должно возвращаться одно и то же значение, если между этими вызовами не были затронуты данные, используемые для проверки объектов на идентичность в методе
 
 (5) при переопределении метода equals()
необходимо переопределить также метод hashCode()
 
Упражнение 3:
Номер 1
В чем особенность класса-обертки для void
?
Ответ:
 (1) никаких отличительных особенностей нет 
 (2) этот класс, в отличие от остальных классов-оберток, не реализует интерфейс java. io.Serializable
 
 (3) он не имеет открытого конструктора. Более того, экземпляр этого класса вообще не может быть получен 
 (4) в пакете java.lang
отсутствует класс java.lang.Void
 
Номер 2
Для чего нужны классы-обертки?
Ответ:
 (1) использование классов-оберток ускоряет работу приложения 
 (2) при использовании коллекций нельзя использовать значения примитивных типов 
 (3) переменная класса-обертки может принимать значения null
 
 (4) классы-обертки предоставляют набор статических методов для работы с примитивными типами 
Номер 3
Для каких примитивных типов Java существуют классы-обертки?
Ответ:
 (1) для всех примитивных типов, включая void
 
 (2) для всех примитивных типов, кроме void
 
 (3) только для числовых (byte
,int
,short
,float
,double
) и void
 
 (4) только для char
и void
 
Упражнение 4:
Номер 1
Какие утверждения относительно класса Math
верны?
Ответ:
 (1) от этого класса нельзя унаследоваться 
 (2) является абстрактным 
 (3) нельзя создать экземпляр этого класса 
 (4) содержит только статические методы 
Номер 2
Какие утверждения относительно класса String
верны?
Ответ:
 (1) от этого класса можно унаследоваться 
 (2) является абстрактным 
 (3) обладает свойством неизменяемости 
 (4) содержит только статические методы 
Номер 3
Какой класс используется для представления модифицируемых строк?
Ответ:
 (1) String
 
 (2) StringTokenizer
 
 (3) StringBuffer
 
 (4) StringEditable
 
 (5) EditableString
 
Упражнение 5:
Номер 1
Какие утверждения относительно класса ClassLoader
верны?
Ответ:
 (1) от этого класса нельзя наследовать 
 (2) является неабстрактным 
 (3) каждый объект Class
содержит ссылку на объект ClassLoader
, с помощью которого он был загружен 
 (4) можно реализовать свой загрузчик, унаследовав его от ClassLoader
 
Номер 2
Какой класс позволяет приложению взаимодействовать со средой исполнения?
Ответ:
 (1) ClassLoader
 
 (2) Class
 
 (3) System
 
 (4) Runtime
 
 (5) ни один из перечисленных 
Номер 3
Какой класс отвечает за загрузку описания классов в память JVM
?
Ответ:
 (1) Class
 
 (2) ClassLoader
 
 (3) System
 
 (4) Runtime
 
 (5) ни один из перечисленных 
Упражнение 6:
Номер 1
Какие утверждения относительно класса Runtime
верны?
Ответ:
 (1) каждому приложению Java
сопоставляется экземпляр класса Runtime
 
 (2) позволяет загружать классы в память 
 (3) позволяет получить данные о количестве памяти, выделенной JVM
 
 (4) позволяет загружать библиотеки 
 (5) объект этого класса можно получить с помощью метода Runtime. getInstance()
 
Номер 2
Какие утверждения относительно класса System
верны?
Ответ:
 (1) предоставляет доступ к стандартному выводу, доступному через переменную System.out
 
 (2) позволяет перенаправлять стандартный ввод 
 (3) позволяет получить все свойства, определенные в системе 
 (4) не позволяет перенаправлять поток вывода сообщений об ошибках 
 (5) некоторые методы этого класса позволяют приложению проверять, является ли операция допустимой в данном контексте 
Номер 3
Какие утверждения относительно класса Process
верны?
Ответ:
 (1) является абстрактным классом 
 (2) не позволяет уничтожить запущенный процесс 
 (3) объекты этого класса получаются вызовом метода exec()
у объекта Runtime
, запускающего отдельный процесс 
 (4) объект этого класса может использоваться для управления процессом и получения информации о нем 
Упражнение 7:
Номер 1
Классы каких базовых исключений определены в пакете java. lang
?
Ответ:
 (1) FatalError
 
 (2) Error
 
 (3) Exception
 
 (4) SystemException
 
Номер 2
Классы каких базовых исключений определены в пакете java.lang
?
Ответ:
 (1) RunnableException
 
 (2) Error
 
 (3) Fatal
 
 (4) Exception
 
 (5) Throwable
 
Номер 3
Какие классы, помогающие взаимодействовать с программным окружением, определены в пакете java. lang
?
Ответ:
 (1) Process
 
 (2) Thread
 
 (3) RunnableException
 
 (4) SecurityManager
 
 (5) Class
 
Упражнение 8:
Номер 1
Какие классы и интерфейсы, необходимые для поддержки многопоточности, определены в пакете java. lang
?
Ответ:
 (1) Thread
 
 (2) Runnable
 
 (3) ThreadIterator
 
 (4) ThreadException
 
 (5) RunnableException
 
Номер 2
Какие классы, необходимые для поддержки многопоточности, определены в пакете java. lang
?
Ответ:
 (1) Process
 
 (2) Thread
 
 (3) RunnableException
 
 (4) ThreadGroup
 
 (5) RuntimeException
 
Номер 3
Какие классы служат для представления примитивных значений в виде объектов?
Ответ:
 (1) Short
 
 (2) String
 
 (3) Integer
 
 (4) Long
 
 (5) Void
 
Главная / Программирование / Программирование на Java / Тест 13
Java Interview.
Autoboxing. | Girl in IT-wolrd1 Что такое autoboxing?
Автоупаковка это механизм неявной инициализации объектов классов-оберток (Byte, Short, Character, Integer, Long, Float, Double) значениями соответствующих им исходных примитивных типов (соотв. byte, short, char, int, long, float, double), без явного использования конструктора класса.
Автоупаковка происходит при прямом присвоении примитива — классу-обертке (с помощью оператора”=”), либо при передаче примитива в параметры метода (типа «класса-обертки»). Автоупаковке в «классы-обертки» могут быть подвергнуты как переменные примитивных типов, так и константы времени компиляции(литералы и final-примитивы). При этом литералы должны быть синтаксически корректными для инициализации переменной исходного примитивного типа.
Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива — типу «класса-обертки».
Например, попытка автоупаковать переменную типа byte в Short, без предварительного явного приведения byte->short вызовет ошибку компиляции.
Автоупаковка констант примитивных типов допускает более широкие границы соответствия. В этом случае компилятор способен предварительно осуществлять неявное расширение/сужение типа примитивов. Преобразование происходит в два этапа:
1) неявное расширение(сужение) исходного типа примитива до типа примитива соответствующего классу-обертке (для преобразования int->Byte, сначала компилятор неявно сужает int в byte)
2) автоупаковку примитива в соотвествующий «класс-обертку» (компилятор автоупаковывает byte->Byte). однако в этом случае существуют два дополнительных ограничения:
a) присвоение примитива — «обертке» может производится только оператором “=” (нельзя передать такой примитив в параметры метода, без явного приведения типов)
b) тип левого операнда не должен быть старше чем Character, тип правого не дожен старше чем int, (допустимо расширение/сужение byte short, byte char, short char
и только сужение byte < — int, short < — int, char < — int, все остальные варианты требуют явного приведения типов)
Дополнительная особенность целочисленных «классов-оберток» созданных автоупаковкой констант в диапазоне -128 +127, в то что они кэшируются JVM. Потому такие обертки с одинаковыми значениями будут являтся ссылками на один объект.
2 Зачем используется autoboxing?
Я процитирую лекцию:
Насколько ты помнишь, в Java есть как типы, унаследованные от класса Object, так и примитивные типы. Но, как оказалось, такая удобная вещь как коллекции и generic’и могут работать только с типами, унаследованными от Object.
3 Альтернативы autoboxing?
Не нашел ответа, но запостил на StackOverFlow.
stackoverflow.com/questions/39212744/what-is-the-alternative-to-autoboxing-in-java
Исходя из этой дискуссии, получается, что альтернатива autoboxing`у это использование примитивных типов, так как использовние autoboxing`a снижает производительность. Вывод: использовать autoboxing только там где это необходимо.
Написана статья про Autoboxing:
effective-java.com/2010/05/the-advantages-and-traps-of-autoboxing/
4 Типы-обертки для примитивных типов mutable или immutable?
Immutable, так как примитивные объекты тоже immutable. Чтобы работать как с Mutable типом есть класс MutableInteger, и.т.д.
5 Как примитивные типы приводятся к непримитивным аналогам?
На этот и последующий вопросы хорошо отвечает вот эта статья: info.javarush.ru/translation/2013/08/22/%D0%90%D0%B2%D1%82%D0%BE%D1%83%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D1%80%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B2-Java-.html
Это заключение из нее:
Автоупаковка является механизмом для скрытого преобразования примитивных типов данных в соответствующие классы-оболочки(объекты). Компилятор использует метод valueOf() чтобы преобразовать примитивные типы в объекты, а методы IntValue (), doubleValue () и т.д., чтобы получить примитивные типы из объекта(То есть обратное преобразование). Автоупаковка преобразует логический тип boolean в Boolean, byte в Byte, char в Character, float в Float, int в Integer, long в Long, short в Short. Распаковка происходит в обратном направлении.
6 Как непримитивные типы приводятся к примитивным?
Выше ответил
7 Как сравниваются примитивные и непримитивные типы?
В лекции это подробно рассматривается, но я нашел так скажем тоже самое, но другими словами.
В Java есть два способа сравнивать объекты на равенство, == и метод equals().
== используется для примитивных типов.
Для объектов «==» это исключительно сравнение ссылок.
Для остальных случаев нужно использовать метод equals(). Кроме того метод hashCode() служит (в теории) для той же цели. Хорошим тоном считается, если вы переопределили equals() и hashCode(). После инициализации неких объектов a и b должно выполняться правило:
Если выражение a.equals(b) вернет true, то a.hashCode() должен быть равен b.hashCode().
8 Всегда ли создается новый объект при операции autoboxing?
Это в лекциях есть:
Когда мы присваиваем переменной типа Integer значение типа int, при этом вызывается метод Integer.valueOf:
функция valueOf не всегда создает новый объект типа Integer.
Она кэширует значения от -128 до 127.
Если передаваемое значение выходит за эти пределы, то новый объект создается, а если нет, то нет.
Если мы пишем new Integer(), то гарантированно создается новый объект.
Если мы вызываем Integer.valueOf(), явно или при autoboxing, то этот метод может вернуть для нас как новый объект, так и отдать объект из кэша, если переданное число лежит в диапазоне от -128 до 127.
9 Как работает кэширование при операции autoboxing?
Ответил в вопросе выше, на всякий случай создал вопрос на StackOverFlow, но там отвечают тоже самое:
stackoverflow.com/questions/39314971/how-cache-works-in-autoboxing-operation-java
10 Для каких типов и/или значений работает кэширование?
В восьмом вопросе. Если у кого – то есть соображения на тему трех последних вопросов, то напишите в комментариях.
=============================
Source: http://info.javarush.ru/DefNeo/2016/09/04/%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B-%D0%BD%D0%B0-%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B-%D0%BA-%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-Level29.html
Like this:
Like Loading…
Interview Q&A, Java, Java Interview Q&A autoboxing, вопросы, интервью, interview, java, Java Interview Q&A, qa
← Tomcat Interview Questions & Answers Writing feedback to colleague. Useful phrases, links. →
статья из блога IT-школы Hillel
- 1.Вступление
- 2.Что такое JVM, JDK, JRE?
- 3.Базовые типы данных в Java
- 4.Примитивы и их обертки (boxing и unboxing)
- 5.Class vs Object
- 6.Методы класса Object
- 7.Сравнение по == и по equals
- 8.В чем разница между кучей (heap) и стековой (stack) памятью в Java?
- 9.Что такое immutable object?
- 10.String. Какие способы создания объекта String? Что такое строковый пул?
- 11.Какая разница между String, StringBuilder и StringBuffer?
Статьи Back-end Трудоустройство Java
Хочу поделиться часто задаваемыми вопросами на собеседованиях для Junior Java Developer. Что нужно знать, чтобы успешно их проходить?
Подготовку к собеседованию Java начнем с Java Core.
Что такое JVM, JDK, JRE?
JVM ( виртуальная машина Java) — это механизм, который обеспечивает среду выполнения Java (байт)кода.
Под каждую операционную систему есть своя реализация JVM, но все они соблюдают одну спецификацию (спека под jvm8), т. е. байткод, который мы получили после компиляции нашего кода, мы можем запустить на любой операционной системе, где есть JVM. Write once, run anywhere. JVM идет в составе JRE и устанавливается также в составе JRE.
JRE (Java Runtime Environment) — это минимальная реализация JVM и набор стандартных библиотек, необходимый для исполнения Java приложений. Для запуска Java программ надо установить JRE.
JDK (Java Development Kit) — набор инструментов для разработки на языке JAVA и JRE.
https://www.javatpoint.com/difference-between-jdk-jre-and-jvm
А вот о том, как стать джава программистом, рассказываем на курсах Java.
Базовые типы данных в Java
В языке Java существуют 8 примитивных и 1 ссылочный типы данных.
Примитивные типы — byte, short, int, long, float, double, boolean, char.
Ссылочный тип — любой инстанцируемый класс, а также массивы.
http://pages.cs.wisc.edu/~bahls/cs302/PrimitiveVsReference.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Рекомендуем курс по теме
- Java Pro advanced
Примитивы и их обертки (boxing и unboxing)
Классы-обертки преобразуют примитивы Java в ссылочные типы (объекты). Каждому примитивному типу данных посвящен класс. Они известны как классы-обертки, потому что они «оборачивают» примитивный тип данных в объект этого класса. Boxing — это процесс создания из примитива в объект-обертку, например int -> Integer, unboxing — обратный процесс
Есть три причины, по которым вы можете использовать объект Number, а не примитив:
В качестве аргумента метода, ожидающего объект (часто используется при работе с коллекциями чисел).
Использовать константы, определенные классом, такие как MIN_VALUE и MAX_VALUE, которые обеспечивают верхнюю и нижнюю границы типа данных.
Использовать методы класса для преобразования значений в другие примитивные типы и обратно, для преобразования в строки и из строк, а также для преобразования между системами счисления (десятичной, восьмеричной, шестнадцатеричной, двоичной).
https://docs.oracle.com/javase/tutorial/java/data/numberclasses.html
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
https://www.w3schools.com/java/java_wrapper_classes.asp
Class vs Object
Class (класс) — это метаинформация или чертеж (blueprint), из которого создаются объекты. Он представляет собой набор свойств или методов, общих для всех объектов одного типа.
Object (Объект) — это экземпляр класса. Это базовая единица объектно-ориентированного программирования, представляющая реальные сущности. Каждое создание объекта требуется памяти.
https://docs.oracle.com/javase/tutorial/java/javaOO/classes.html
https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html
https://www.w3schools.in/java-questions-answers/difference-between-classes-objects/
Методы класса Object
Object clone() — создает и возвращает точную копию (клон) этого объекта.
boolean equals(Object obj) — сравнивает на равенство c obj объектом.
void finalize() — это функция вызывается сборщиком мусора для объекта, когда сборщик мусора определяет, что на этот объект больше нет ссылок. С Java 9 является deprecated.
Class getClass() — возвращает класс Class для этого объекта.
int hashCode() — возвращает хешкод для этого объекта.
void notify — пробуждает единственный поток, ожидающий на мониторе этого объекта.
void notifyAll — пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString() — возвращает строковое представления объекта.
void wait() — заставляет текущий поток ждать, пока другой поток не вызовет метод notify() или метод notifyAll() для этого объекта.
void wait(long timeout) — заставляет текущий поток ждать, пока другой поток не вызовет метод notify() или метод notifyAll() для этого объекта или по истечению указанного количества времени.
void wait(long timeout, int nanos) — заставляет текущий поток ждать, пока другой поток не вызовет метод notify() или метод notifyAll() для этого объекта или по истечению указанного количества времени.
Также могут спросить про контракт equals и hashCode. Рассмотрим это более подробно в блоке Java Collections.
https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html
Сравнение по == и по equals
Сравнение по «==» — сравнение по ссылкам.
Сравнение по «equals» — если переопределен equals, то это сравнение эквивалентности объектов по их полям, если нет — по ссылкам на объекты.
https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
В чем разница между кучей (heap) и стековой (stack) памятью в Java?
Stack — стековая память используется для хранения элементов с очень коротким сроком службы, таких как локальные переменные, ссылки на объекты, выделяемое каждому потоку во время исполнения. Стековая память находится в физическом (виртуальном) пространстве (RAM). Память под стек живет до возврата функции.
JVM создает отдельный стек для каждого потока, и все, что было создано в рамках одного потока, не видно другим потокам.
Для увеличения размера стека используется ключ -XSS.
При переполнении стека JVM бросает java.lang.StackOverFlowError.
Heap — память кучи выделяется для хранения объектов и классов. Куча создается во время старта JVM и живет до тех пор, пока жив JVM. Всякий раз, когда мы создаем объекты, он занимает место в памяти кучи, в то время как ссылка на этот объект создается в стеке. Для автоматического управления памятью Java предоставляет сборщик мусора, который удаляет объекты, которые больше не используются в куче (heap). Все, что создается в куче (heap), видно всем потокам, и другие потоки могут использовать, если есть ссылка на эти объекты.
Для увеличения размера кучи (heap) используются ключи Xms and -Xmx.
При переполнении кучи(heap) JVM бросает java.lang.OutOfMemoryError.
Стек и куча находятся в физическом (виртуальном) пространстве.
https://www.javatpoint.com/stack-vs-heap-java
https://www. azul.com/blog/what-is-java-heap-size/
https://www.javatpoint.com/java-heap
Что такое immutable object?
Это объект, внутреннее состояние которого не меняется после того, как он был создан. API такого объекта представляет методы только для чтения.
Неизменяемые объекты особенно полезны в параллельных приложениях. Поскольку они не могут изменить состояние, они не могут быть повреждены вмешательством потоков или наблюдаться в несогласованном состоянии.
В Java все классы-обертки (Integer, Long, Boolean, Show и тд) и String являются immutable object.
https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html
https://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html
String. Какие способы создания объекта String? Что такое строковый пул?
В Java строки — это объект, представляющий последовательность символов или значений типа данных char. Класс java.lang.String используется для создания строкового объекта Java.
Есть два способа создания объекта String:
Первое создается в String pools, в второе в куче (heap).
Пул строк (String pool) — это область хранения в куче Java. Оно было придумано, потому что класс String является immutable, и каждое изменение объекта этого класса порождает новый объект. Каждый раз, когда создается строковый литерал, JVM сначала проверяет пул строковых литералов, если строка уже существует в пуле строк, возвращается ссылка на экземпляр в пуле строк, если строка не существует в пуле, новый объект String инициализируется и помещается в пул и отдается ссылка.
Так же есть метод intern, который позволяет записать строку, которая была создана оператором new в String pools.
String_interning
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Какая разница между String, StringBuilder и StringBuffer?
Java предоставляет три класса для представления строки: String, StringBuffer и StringBuilder. Класс String является неизменяемым классом, тогда как классы StringBuffer и StringBuilder являются изменяемыми.
StringBuffer синхронизирован, то есть потокобезопасен. Это означает, что два потока не могут одновременно вызывать методы StringBuffer. Но за счет этой синхронизации он менее эффективен, чем StringBuilder который не потокобезопасный.
Все три класса реализуют интерфейс CharSequence.
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html
https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html
Рекомендуем публикацию по теме
- Вопросы на собеседованиях для начинающих Java разработчиков, часть 2 читать 10 мин
java.lang (Java SE 9 и JDK 9 )
Предоставляет классы, которые являются фундаментальными для разработки Java. язык программирования. Наиболее важные классы Объект
, являющийся корнем иерархии классов, и Класс
, экземпляры которого представляют классы во время выполнения.
Часто необходимо представить значение примитива
введите, как если бы это был объект. Классы-обертки Boolean
, Символ
, Целое число
, Длинный
, Плавающий
,
и Double
служат этой цели. Объект типа Double
, например, содержит поле типа double,
представление этого значения таким образом, что ссылка на него может быть
хранится в переменной ссылочного типа. Эти классы также обеспечивают
ряд методов для преобразования между примитивными значениями, а также
как поддержка таких стандартных методов, как equals и hashCode. Класс Void
— это неинстансируемый класс, который содержит
ссылка на Объект класса
, представляющий тип void.
Класс Math
предоставляет часто используемые математические
функции, такие как синус, косинус и квадратный корень. Классы String
, StringBuffer
и StringBuilder
аналогично
предоставляют часто используемые операции над символьными строками.
Классы ClassLoader
, Процесс
, ProcessBuilder
, Runtime
, SecurityManager
и Система
обеспечивает «системные операции», которые управляют динамическим
загрузка классов, создание внешних процессов, хост
запросы окружающей среды, такие как время суток, и соблюдение
политики безопасности.
Класс Throwable
включает объекты, которые можно бросать
оператором throw
. Подклассы Throwable
представляют ошибки и исключения.
Кодировки символов
Спецификация java.nio.charset.Charset 9Класс 0004 описывает соглашения об именах
для кодировок символов, а также набор стандартных кодировок
который должен поддерживаться каждой реализацией Java
Платформа.
- С:
- 1,0
Сводка по интерфейсу Интерфейс Описание Добавляемый Объект, к которому можно добавить
символьных
последовательностей и значений.Автоматически закрывающийся Объект, который может содержать ресурсы (такие как дескрипторы файлов или сокетов) пока не закроется.
Последовательность символов CharSequence
— это читаемая последовательность изсимволов
значений.Клонируемый Класс реализует интерфейс
Cloneable
для указать методуObject.clone()
, что он является законным для этого метода, чтобы сделать копия экземпляров этого класса поле за полем.Сопоставимый Этот интерфейс накладывает общий порядок на объекты каждого класса, который реализует это.
Итеративный Реализация этого интерфейса позволяет объекту быть целью расширенного Оператор
for
(иногда называемый оператором «для каждого цикла»).Процессхандле ProcessHandle идентифицирует собственные процессы и обеспечивает контроль над ними.
Процессхандле.Информация Информационный снимок о процессе.
Читаемый A
Readable
является источником символов.Работающий Интерфейс
Runnable
должен быть реализован любым класс, экземпляры которого предназначены для выполнения потоком.StackWalker.StackFrame Объект
StackFrame
представляет собой вызов метода, возвращенныйStackWalker
.Системный регистратор Экземпляры System.Logger
регистрируют сообщения, которые будут перенаправляется в базовую структуру ведения журналов, которую используетLoggerFinder
.Thread.UncaughtExceptionHandler Интерфейс для обработчиков, вызываемых при резком
Thread
завершается из-за неперехваченного исключения.Сводка по классу Класс Описание Логический Класс Boolean упаковывает значение примитивного типа
логическое значение
в объекте.Байт Класс
Byte
упаковывает значение примитивного типаbyte
в объекте.Символ Класс
Character
упаковывает значение примитива введитеchar
в объекте.Символ.Подмножество Экземпляры этого класса представляют определенные подмножества Unicode набор символов.
Символ.UnicodeBlock Семейство подмножеств символов, представляющих блоки символов в Спецификация Юникода.
Класс <Т> Экземпляры класса
Класс
представляют классы и интерфейсы в запущенном Java-приложении.Загрузчик классов Загрузчик классов — это объект, отвечающий за загрузку классов.
КлассЗначение Лениво связать вычисляемое значение с (потенциально) каждым типом.
Компилятор Устарело, подлежит удалению: этот элемент API подлежит удалению в будущей версии. JIT-компиляторы и их технологии слишком сильно различаются, чтобы эффективно управляться с помощью стандартизированного интерфейса.
Двойной Класс
Double
упаковывает значение примитивного типадвойной
в объекте.Enum > Это общий базовый класс для всех типов перечисления языка Java.
Поплавок Класс
Float
упаковывает значение примитивного типаfloat
в объекте.НаследуемыйThreadLocal Этот класс расширяет класс
ThreadLocal
для обеспечения наследования значений. из родительского потока в дочерний: когда создается дочерний поток, дочерний элемент получает начальные значения для всех наследуемых локальных переменных потока для которых родитель имеет значения.Целое число Класс
Integer
упаковывает значение примитивного типаint
в объекте.Длинный Класс
Long
упаковывает значение примитивного типаlong
в объекте.Математика Класс
Math
содержит методы для выполнения основных числовые операции, такие как элементарная экспонента, логарифм, квадратный корень и тригонометрические функции.Модуль Представляет модуль времени выполнения,
с именем
или без имени.Слой модулей Слой модулей в виртуальной машине Java.
Модуль Слой.Контроллер Управляет уровнем модуля.
Номер Абстрактный класс
Номер
является надклассом платформы классы, представляющие числовые значения, которые могут быть преобразованы в примитивные типыбайт
,двойной
,число с плавающей запятой
,int
,long
иshort
.Объект Класс
Объект
является корнем иерархии классов.Упаковка Представляет метаданные о пакете времени выполнения, связанном с загрузчиком классов.
Процесс Процесс
обеспечивает управление собственными процессами, запущенными ProcessBuilder. start и Runtime.exec.ProcessBuilder Этот класс используется для создания процессов операционной системы.
ProcessBuilder.Redirect Представляет источник ввода подпроцесса или назначение вывод подпроцесса.
Время выполнения Каждое приложение Java имеет один экземпляр класса
Среда выполнения
, которая позволяет приложению взаимодействовать с среда, в которой работает приложение.Среда выполнения. Версия Представление строки версии для реализации Платформа Java SE.
Разрешение на выполнение Этот класс предназначен для разрешений во время выполнения.
диспетчер безопасности Менеджер безопасности — это класс, который позволяет приложения для реализации политики безопасности.
Короткий Класс Short
оборачивает значение примитивного типакороткий
в объекте.StackTraceElement Элемент в трассировке стека, возвращенный функцией
Throwable.getStackTrace()
.StackWalker Устройство для обхода стеллажей.
Строгая математика Класс
StrictMath
содержит методы для выполнения базовых числовые операции, такие как элементарная экспонента, логарифм, квадратный корень и тригонометрические функции.Строка Класс
String
представляет строки символов.Строковый буфер Поточно-безопасная изменяемая последовательность символов.
StringBuilder Изменяемая последовательность символов.
Система Класс
System
содержит несколько полезных полей класса. и методы.System.LoggerFinder Служба
LoggerFinder
отвечает за создание, управление, и настройка регистраторов на используемую ими базовую структуру.Резьба Поток — это поток выполнения в программе.
Группа потоков Группа потоков представляет набор потоков.
ThreadLocal Этот класс предоставляет локальные переменные потока.
Метательный Класс
Throwable
является надклассом всех ошибок и исключения в языке Java.Пустота Класс
Void
— это нереальный класс-заполнитель для хранения ссылка на объекткласса
, представляющий ключевое слово Java пустота.Резюме перечисления Перечисление Описание Символ.UnicodeScript Семейство подмножеств символов, представляющих сценарии символов. определено в Стандартное приложение Unicode № 24: Имена скриптов .
ProcessBuilder.Redirect.Type Тип
ProcessBuilder.Redirect
.StackWalker.Опция Опция обходчика стека для настройки кадра стека информация, полученная с помощью
StackWalker
.Система.Журнал.Уровень Уровни системных регистраторов.
Состояние потока Состояние потока.
Сводка исключений Исключение Описание Арифметическое исключение Возникает при возникновении исключительного арифметического условия.
ArrayIndexOutOfBoundsException Выброшено, чтобы указать, что к массиву был осуществлен доступ с недопустимым индексом.
ArrayStoreException Выброшено, чтобы указать, что была предпринята попытка сохранить неправильный тип объекта в массив объектов.
ClassCastException Выброшено, чтобы указать, что код попытался преобразовать объект к подклассу, экземпляром которого он не является.
ClassNotFoundException Возникает, когда приложение пытается загрузить класс через свой имя строки с использованием: Метод
forName
в классеClass
.CloneNotSupportedException Выброшено, чтобы указать, что метод
клон
в классеОбъект
был вызван для клонирования объекта, но это класс объекта не реализуетCloneable
интерфейс.EnumConstantNotPresentException Возникает, когда приложение пытается получить доступ к константе перечисления по имени. а тип enum не содержит константы с указанным именем.
Исключение Класс
Исключение
и его подклассы являются формойМетательный
, который указывает на условия, при которых приложение может захотеть поймать.Исключение нелегального доступа Исключение IllegalAccessException возникает, когда приложение пытается для рефлексивного создания экземпляра (кроме массива), установить или получить поле или вызвать метод, но текущий исполняемый метод не имеет доступа к определению указанный класс, поле, метод или конструктор.
Недопустимое АргументИсключение Выброшено, чтобы указать, что метод был передан недопустимым или неуместный аргумент.
Недопустимое исключение Выброшено, чтобы указать, что метод был вызван неподходящей вызывающей стороной.
Незаконное МониторСтатеИсключение Выброшено, чтобы указать, что поток попытался ожидать монитор объекта или для уведомления других потоков, ожидающих монитор, не являясь владельцем указанного монитора.
Исключение Иллегалстатеексцептион Сигналы о том, что метод был вызван в недопустимом или неподходящее время.
Недопустимое исключение ThreadStateException Выброшено, чтобы указать, что поток не находится в соответствующем состоянии. для запрошенной операции.
IndexOutOfBoundsException Выброшено, чтобы указать, что индекс некоторого вида (например, к массиву, к строка или вектор) выходит за пределы допустимого диапазона.
InstantiationException Возникает, когда приложение пытается создать экземпляр класса используя метод
newInstance
в классеКласс
, но указанный объект класса не может быть создан.InterruptedException Генерируется, когда поток ожидает, спит или иным образом занят. и поток прерывается либо до, либо во время действия.
LayerInstantiationException Возникает при сбое создания слоя модуля.
NegativeArraySizeException Возникает, если приложение пытается создать массив отрицательного размера.
NoSuchFieldException Сигнализирует, что в классе нет поля с указанным именем.
NoSuchMethodException Вызывается, когда определенный метод не может быть найден.
NullPointerException Возникает, когда приложение пытается использовать
null
в случае, когда требуется объект.NumberFormatException Выброшено, чтобы указать, что приложение попыталось преобразовать строку к одному из числовых типов, но эта строка не иметь соответствующий формат.
ReflectiveOperationException Общий надкласс исключений, создаваемых отражающими операциями в отражение ядра.
RuntimeException RuntimeException
является суперклассом тех исключения, которые могут быть выброшены во время нормальной работы Виртуальная машина Java.Исключение безопасности Выброшено менеджером безопасности, чтобы указать на нарушение безопасности.
StringIndexOutOfBoundsException Генерируется методами
String
, чтобы указать, что индекс отрицательный или больше, чем размер строки.TypeNotPresentException Возникает, когда приложение пытается получить доступ к типу с помощью строки представляющее имя типа, но не определяющее тип с можно найти указанное имя.
UnsupportedOperationException Выброшено, чтобы указать, что запрошенная операция не поддерживается.
Сводка ошибок Ошибка Описание AbstractMethodError Возникает, когда приложение пытается вызвать абстрактный метод.
Ошибка утверждения Выброшено, чтобы указать, что утверждение не удалось.
BootstrapMethodError Брошенный, чтобы указать, что
инструкция invokedynamic
имеет не удалось найти его метод начальной загрузки, или метод начальной загрузки не смог обеспечить сайт вызова с целью правильного типа метода.ClassCircularityError Возникает, когда виртуальная машина Java обнаруживает цикличность в иерархия суперклассов загружаемого класса.
ClassFormatError Возникает, когда виртуальная машина Java пытается прочитать класс файл и определяет, что файл поврежден или не может быть интерпретироваться как файл класса.
Ошибка Ошибка
Throwable
что указывает на серьезные проблемы, которые разумное применение не следует пытаться поймать.ExceptionInInitializerError Сигнализирует о том, что в статическом инициализаторе возникла непредвиденная исключительная ситуация.
Незаконная ошибка доступа Возникает, если приложение пытается получить доступ к полю или изменить его, или для вызова метода, к которому у него нет доступа.
НесовместимостьКлассChangeError Выброшено, когда в каком-то классе произошло несовместимое изменение класса определение.
Ошибка экземпляра Возникает, когда приложение пытается использовать Java
new
конструкция для создания экземпляра абстрактного класса или интерфейса.Внутренняя ошибка Выброшено, чтобы указать на непредвиденную внутреннюю ошибку в виртуальная машина Java.
LinkageError Подклассы
LinkageError
указывают, что класс имеет некоторая зависимость от другого класса; однако последний класс имеет несовместимо изменился после компиляции прежнего класса.NoClassDefFoundError Возникает, если виртуальная машина Java или экземпляр
ClassLoader
пытается загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованиемновое выражение
) и не удалось найти определение класса.NoSuchFieldError Вызывается, если приложение пытается получить доступ или изменить указанный поле объекта, и этот объект больше не имеет этого поля.
NoSuchMethodError Генерируется, если приложение пытается вызвать указанный метод класс (статический или экземпляр), и этот класс больше не имеет определение этого метода.
OutOfMemoryError Возникает, когда виртуальная машина Java не может выделить объект потому что это из памяти, и больше память не может быть сделана доступен сборщику мусора.
StackOverflowError Возникает при переполнении стека из-за того, что приложение слишком глубоко рекурсирует.
ThreadDeath Экземпляр
ThreadDeath
брошен в поток-жертву когда (устарело)Вызван метод Thread.stop()
.Неизвестная ошибка Вызывается при возникновении неизвестного, но серьезного исключения в Виртуальная машина Java.
Неудовлетворенная ссылкаОшибка Генерируется, если виртуальная машина Java не может найти подходящий объявление метода на родном языке
native
.UnsupportedClassVersionError Возникает, когда виртуальная машина Java пытается прочитать класс файл и определяет, что основной и дополнительный номера версий в файле не поддерживаются.
VerifyError Вызывается, когда «верификатор» обнаруживает, что файл класса, хотя и хорошо сформирован, содержит некоторую внутреннюю несогласованность или проблема с безопасностью.
Ошибка виртуальной машины Выброшено, чтобы указать, что виртуальная машина Java не работает или закончились ресурсы, необходимые для продолжения работы.
Сводка по типам аннотаций Тип аннотации Описание Устарело Программный элемент с аннотацией
@Deprecated
— это элемент, который программисты не рекомендуется использовать.Функциональный интерфейс Тип информативной аннотации, используемый для указания того, что интерфейс объявление типа предназначено для функционального интерфейса как определяется спецификацией языка Java.
Переопределение Указывает, что объявление метода предназначено для переопределения объявление метода в супертипе.
SafeVarargs Утверждение программиста, что тело аннотированного метода или конструктор не выполняет потенциально небезопасные операции над своим Параметр varargs.
Подавить предупреждения Указывает, что указанные предупреждения компилятора должны быть подавлены в аннотированный элемент (и во всех элементах программы, содержащихся в аннотированном элемент).
Документация JDK 19 — Главная
Обзор
- Прочтите меня
- Примечания к выпуску
- Что нового
- Руководство по миграции
- Загрузить JDK
- Руководство по установке
- Формат строки версии
Инструменты
- Технические характеристики инструментов JDK
- Руководство пользователя JShell
- Руководство по JavaDoc
- Руководство пользователя средства упаковки
Язык и библиотеки
- Обновления языка
- Основные библиотеки
- HTTP-клиент JDK
- Учебники по Java
- Модульный JDK
- Руководство программиста API бортового регистратора
- Руководство по интернационализации
Технические характеристики
- Документация API
- Язык и ВМ
- Имена стандартных алгоритмов безопасности Java
- банка
- Собственный интерфейс Java (JNI)
- Инструментальный интерфейс JVM (JVM TI)
- Сериализация
- Проводной протокол отладки Java (JDWP)
- Спецификация комментария к документации для стандартного доклета
- Прочие характеристики
Безопасность
- Руководство по безопасному кодированию
- Руководство по безопасности
Виртуальная машина HotSpot
- Руководство по виртуальной машине Java
- Настройка сборки мусора
Управление и устранение неполадок
- Руководство по устранению неполадок
- Руководство по мониторингу и управлению
- Руководство по JMX
Client Technologies
- Руководство по специальным возможностям Java
Классы-оболочки — массивы и списки массивов в курсе Java
В прошлой лекции мы обсуждали списки массивов, которые представляют собой тип структуры данных, похожий на массивы, но размер которого изменяется для размещения элементов, находящихся внутри них. Однако мы обнаружили одно вопиющее ограничение, заключающееся в том, что ArrayLists работают только со ссылочными типами. Они не могут содержать как примитивы, так и ссылочные типы, как это делают обычные массивы. Итак, похоже, мы обмениваем одно ограничение на другое. Но не беспокойтесь, потому что у нас есть способ решить эту проблему. Видите ли, ArrayList — это тип объекта, известный как универсальный. Это видно по угловым скобкам, которые мы использовали с ним. Обобщения позволяют разработчикам создавать классы, кодировать класс один раз и заставлять их работать с широким спектром ссылочных типов без необходимости писать класс снова и снова с разными типами, если поведение должно быть одинаковым. Недостатком является то, что типы должны быть ссылочными типами, как мы обсуждали. Так что насчет примитивов?
Пришли наши герои, обертки классов. Это обертка с буквой w, как обертка подарка, а не рэпер, как быстро говорящий лирик. Существует восемь классов-оболочек. Можете ли вы придумать что-то еще в Java, что у нас есть восемь, что могло бы иметь отношение к разговору? Вот так. У нас есть восемь примитивных типов данных. А восемь классов-оболочек, разумеется, являются ссылочными типами и соответствуют каждому из примитивных типов. Итак, как вы видите, классами-оболочками являются Byte, Short, Integer, Long, Float, Double, Character и Boolean. Таким образом, за исключением целых и символов, которые указаны полностью, все классы-оболочки являются просто версиями своих примитивных аналогов с заглавной буквы. Довольно круто. Итак, как они помогают нам преодолеть ограничения дженериков, таких как ArrayLists, которые могут работать только со ссылочными типами? Давайте создадим файл с именем WrapperFun. Итак, здесь, New, класс Java, у нас есть WrapperFun. И я собираюсь положить это здесь немного. И нам нужно импортировать java.util.ArrayList. И затем у нас есть наш публичный static void main. Вот так.
И мы создадим ArrayList, и нам понадобится ArrayList целых чисел, но на этот раз мы должны использовать тип класса-оболочки, который является ссылочным типом. Итак, ArrayList, поехали. И как мы складываем целые числа? Давайте просто сделаем, чтобы это было довольно просто. Теперь вы можете подумать, эй, вот хороший способ сделать это. Но вы увидите, что компилятор даже скажет нам, что это не лучший способ сделать это. Мы поговорим об этом. Но давайте сначала посмотрим, работает ли это, int i = 0; я < myAL.size(). Помните, метод размера вместо поля длины, общедоступного поля или свойства. Вот так. И System.out.println(myAL.get(i)). Вот так. Мы еще раз обсудим это предупреждение, прямо здесь, более подробно через минуту. А пока запустим.
Итак, WrapperFun, щелкните правой кнопкой мыши и выберите «Запустить». И мы на самом деле получаем наши 10 и наши 22. Довольно круто. Итак, похоже, у нас есть способ решить нашу проблему с ArrayList, где мы можем хранить только ссылки. Но что делать с этим предупреждением? Проблема в том, что это, кажется, то, что мы ожидаем сделать. Классы-оболочки являются ссылочными типами, и для их динамического создания мы использовали ключевое слово new. Итак, мы можем это сделать, но классы-оболочки особенные. Чтобы облегчить нашу жизнь, Java автоматически выполняет размещение примитивов, которые мы хотим сохранить внутри объекта, в процессе, называемом автоупаковкой или автоматической упаковкой. Здесь в нашу коробку автоматически помещается примитив, объект типа соответствующего нам класса-обертки.
Таким образом, мы можем обращаться с объектами класса-оболочки так же, как с соответствующими им примитивами в этой ситуации без лишнего лишнего кода. Итак, вместо того, чтобы делать это, обратите внимание, если у меня есть эта строка здесь, и она просто перечеркивает целое число прямо здесь, а маленький пузырь здесь говорит «Удалить бокс», чтобы мы могли это сделать. Но я просто собираюсь изменить его вручную. Вот так. 10 и 22 и больше никаких нареканий. Итак, несмотря на то, что это примитив, который мы храним здесь, он автоматически знает, что, поскольку он содержит только ссылки, он создаст для этого автоматический блок. И это работает только с классами-оболочками. И давайте запустим его снова и посмотрим, работает ли он. Щелкните правой кнопкой мыши «Выполнить», и все готово. Получил два значения еще раз. Итак, вы, возможно, также заметили, что когда мы используем метод get, нам не нужно преобразовывать его обратно. Нам не нужно говорить, например, точка два, целое число, или получить целое число, или что-то в этом роде. Он печатает автоматически,
все в порядке. И это значение фактически автоматически распаковывается. На самом деле мы можем видеть еще яснее. Итак, int num = myAL.get(i). Если бы мы захотели, мы могли бы использовать num вместо этого. Видишь, ошибки нет. И это потому, что хотя технически это вернет ссылку, он знает, что элемент слева ожидает, что там будет примитив, поэтому он возвращает примитив. Итак, это довольно круто. Итак, автоматическая распаковка. Помимо открытия возможности работать с примитивами в контексте обобщений, таких как ArrayList, классы-оболочки также предоставляют множество очень мощных и полезных статических методов, что означает, что их можно вызывать непосредственно для типа класса. Позже в курсе мы еще поговорим о статических методах. Но сейчас, опять же, все, что вам нужно отметить, это то, что мы вызываем метод непосредственно для имени класса, а не создаем объект, а затем вызываем метод для объекта. Итак, давайте протестируем один из них в нижней части нашего класса-оболочки. Итак, я собираюсь просто пройтись по этой петле здесь. И мы напишем наш дополнительный код, someValue =, теперь обратите внимание, что я беру здесь 450 в двойных кавычках. И затем, если я хочу получить числовое значение из этого, и опять же, это тривиальный пример, но он дает информацию о том, как это сделать. Итак, вы просто говорите целое число, которое является классом-оболочкой для ints.parseInt, а затем передаете ему строку, и оно возвращает целое число. Довольно круто.
Итак, числовое значение, я могу манипулировать им так же, как и любым другим целым числом, а затем распечатать его. Итак, что мы должны сделать, сейчас у нас должно быть 460. Итак, давайте запустим его и посмотрим, что он делает. Щелкните правой кнопкой мыши «Выполнить», и вы увидите, что теперь в дополнение к двум другим внутри этого ArrayList ранее у нас теперь есть наши 460. Потому что мы смогли преобразовать эту строку в это число. И все, это может показаться не очень важным, но многие данные, которые поступают в наши программы, приходят в виде текстовых версий данных. И мы должны преобразовать его в числовые версии, чтобы манипулировать им числовым способом. В противном случае он подумал бы, что что-то вроде плюс равно как конкатенация, а не сложение. Итак, нам иногда нужно преобразовать его в числовой тип, чтобы работать с ним. Итак, как видите, снова вызов parseInt для someValue преобразует строку в целое число и возвращает целочисленное значение. Затем мы можем манипулировать числовым значением, как любой целочисленной переменной. В нашем примере мы просто добавили к нему 10. Прежде чем двигаться дальше, у меня есть для вас задание. Продолжая наш пример с классом-оболочкой Fun или WrapperFun, под кодом parseInt, который мы только что добавили, я бы хотел, чтобы вы создали еще одну строку, но на этот раз с двойным значением. То есть значение с десятичной точкой, например, приблизительное значение числа Пи, 3,14159..
Используйте соответствующий класс-оболочку, чтобы преобразовать эту строку, содержащую двойное представление, в фактическое двойное, а затем распечатать это фактическое двойное значение. Вы можете использовать свою интуицию, чтобы догадаться, что вам может понадобиться сделать. И, возможно, намек, который есть у Integer.parseInt, это то, что нужно делать, когда у вас есть целые числа, это Integer.parseInt. Итак, возможно, класс двойной оболочки может вам как-то помочь. Может быть, посмотреть на это. Итак, остановите видео, вернитесь, когда закончите, или если вам понадобится помощь. Как это сработало для вас? Если вы боролись с этим, это нормально. Я дал вам подсказки, но ожидал, что вы будете использовать некоторые логические выводы и, возможно, функции автоматического завершения в IntelliJ или выбранной вами IDE, чтобы помочь вам. Давайте напишем код. Итак, под всем этим мы собираемся добавить, String strPi — это то, как я его назову, и мы поместим 3. 14159.
Вы могли бы выбрать другое двойное значение. Это нормально, двойной myPi = Double.parseDouble. Итак, Integer.parseInt, Double.parseDouble. И мы передаем его в этом strPi здесь. И мы собираемся сделать System.out.println на myPi. Отлично. Теперь давайте запустим его и посмотрим, что мы получим. Итак, в дополнение к трем значениям, которые у нас были, давайте посмотрим, что произойдет. Итак, запускаем. И получаем значение 3,14159. Теперь печать не дает вам идеального представления о том, что происходит.
Итак, если вы хотите что-то добавить или попробовать что-то еще, 2.5, и просто посмотрите, что она делает. Вы можете видеть, что вы можете делать математику с ним. Итак, вы можете очень ясно видеть, что это на самом деле число, а не просто строка. Итак, он работает именно так, как мы ожидали. Теперь вы немного знаете, как работать с классами-оболочками как в контексте универсальных методов, таких как ArrayList, так и с использованием их статических методов, таких как parseInt и parseDouble.