Программирование на 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 Interview.

Autoboxing. | Girl in IT-wolrd

1 Что такое 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. 1.Вступление
  2. 2.Что такое JVM, JDK, JRE?
  3. 3.Базовые типы данных в Java
  4. 4.Примитивы и их обертки (boxing и unboxing)
  5. 5.Class vs Object
  6. 6.Методы класса Object
  7. 7.Сравнение по == и по equals
  8. 8.В чем разница между кучей (heap) и стековой (stack) памятью в Java?
  9. 9.Что такое immutable object?
  10. 10.String. Какие способы создания объекта String? Что такое строковый пул?
  11. 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 — Главная

    org/" typeof="BreadcrumbList">
  1. Домашняя
  2. Ява ​​
  3. Java SE
  4. 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.