0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В Java у каждого примитивного типа есть соответствующий "объектный" тип. Например, для int существует пара в виде Integer. Последний представлен классом и называется классом-оберткой.</p>
1
<p>В Java у каждого примитивного типа есть соответствующий "объектный" тип. Например, для int существует пара в виде Integer. Последний представлен классом и называется классом-оберткой.</p>
2
<p>То же самое и для всех остальных примитивных типов:</p>
2
<p>То же самое и для всех остальных примитивных типов:</p>
3
<p>Классы-обертки нужны для нескольких целей, которых по разным причинам невозможно решить с помощью примитивных типов.</p>
3
<p>Классы-обертки нужны для нескольких целей, которых по разным причинам невозможно решить с помощью примитивных типов.</p>
4
<h3>Совместимость и единообразие</h3>
4
<h3>Совместимость и единообразие</h3>
5
<p>Многие возможности Java завязаны на то, что типы представлены классами, только в этом случае они смогут быть использованы как параметры методов или их возвращаемое значение. К ним, например, относятся обобщенные типы и как их следствие коллекции. Все это мы рассмотрим в следующих курсах.</p>
5
<p>Многие возможности Java завязаны на то, что типы представлены классами, только в этом случае они смогут быть использованы как параметры методов или их возвращаемое значение. К ним, например, относятся обобщенные типы и как их следствие коллекции. Все это мы рассмотрим в следующих курсах.</p>
6
<h3>null</h3>
6
<h3>null</h3>
7
<p>Примитивные типы всегда содержат какое-то осмысленное значение. На практике же, значение может быть не определено. Особенно часто такое происходит, когда данные поступают из внешних источников. Для представления таких данных нужно специальное обозначение и возможность использовать это значение. В Java, как и в большинстве других языков, таким значением является null. Его можно использовать только с классами-обертками.</p>
7
<p>Примитивные типы всегда содержат какое-то осмысленное значение. На практике же, значение может быть не определено. Особенно часто такое происходит, когда данные поступают из внешних источников. Для представления таких данных нужно специальное обозначение и возможность использовать это значение. В Java, как и в большинстве других языков, таким значением является null. Его можно использовать только с классами-обертками.</p>
8
<p>По этой причине, множество методов ожидает на вход классы-обертки, а не примитивные типы.</p>
8
<p>По этой причине, множество методов ожидает на вход классы-обертки, а не примитивные типы.</p>
9
<h3>Утилиты и значения</h3>
9
<h3>Утилиты и значения</h3>
10
<p>Классы-обертки содержат в себе полезные значения и методы, для своих типов. Например, в Integer есть данные о максимальном и минимальном значениях для типа, там же можно найти методы, которые преобразуют другие типы в числа.</p>
10
<p>Классы-обертки содержат в себе полезные значения и методы, для своих типов. Например, в Integer есть данные о максимальном и минимальном значениях для типа, там же можно найти методы, которые преобразуют другие типы в числа.</p>
11
<h2>Почему так устроено?</h2>
11
<h2>Почему так устроено?</h2>
12
<p>Зачем тогда нужны примитивные типы если есть классы-обертки? Ответ кроется в производительности. Работа с примитивными типами как объектами значительно ухудшает производительность программы. Поэтому по умолчанию создаются объекты именно примитивных типов.</p>
12
<p>Зачем тогда нужны примитивные типы если есть классы-обертки? Ответ кроется в производительности. Работа с примитивными типами как объектами значительно ухудшает производительность программы. Поэтому по умолчанию создаются объекты именно примитивных типов.</p>
13
<h2>Боксинг и анбоксинг (Boxing and Unboxing)</h2>
13
<h2>Боксинг и анбоксинг (Boxing and Unboxing)</h2>
14
<p>По логике, такая система должна приводить к постоянному конвертированию типов в коде, так как где-то создаются примитивные типы, где-то нужны классы-обертки и наоборот. К счастью, этого почти никогда не происходит благодаря механизму автобоксинга (Autoboxing). Тип преобразуется автоматически в тот момент, когда это нужно.</p>
14
<p>По логике, такая система должна приводить к постоянному конвертированию типов в коде, так как где-то создаются примитивные типы, где-то нужны классы-обертки и наоборот. К счастью, этого почти никогда не происходит благодаря механизму автобоксинга (Autoboxing). Тип преобразуется автоматически в тот момент, когда это нужно.</p>
15
<p>По этой схеме работает и передача аргументов в методы и возврат из них.</p>
15
<p>По этой схеме работает и передача аргументов в методы и возврат из них.</p>