Рекомендации: что использовать, классы-оболочки или примитивные типы данных?
В Java мы имеем примитивные типы данных и кучу классов-оболочек для них. Мой вопрос в том, когда использовать что? Я знаю, что когда нам нужно создавать коллекции, нам нужно будет использовать классы-оболочки, но кроме этого существуют другие конкретные случаи, когда нужно использовать классы-оболочки?
Кроме того, нужно ли всегда использовать примитивные типы данных, если это абсолютно необходимо?
Например, если я создаю класс, имеющий целое число и логические свойства:
Class MyClass {
...
private Integer x;
private Boolean y;
...
}
ИЛИ
Class MyClass {
...
private int x;
private boolean y;
...
}
Какие из них следует использовать чаще? И в каких сценариях должен использоваться другой?
Ответы
Ответ 1
Используйте примитивный тип, если у вас нет другого выбора. Тот факт, что он не является нулевым, предотвратит многие ошибки. И они также быстрее.
Помимо коллекций, типы-обертки обычно используются для представления значения, допускающего значение NULL (например, исходящего из столбца с нулевым значением базы данных).
Ответ 2
эта статья рассказывает об классах-оболочках, они сказали:
Классы-оболочки в API Java служат для двух основных целей:
1- Предоставить механизм для "обертывания" примитивных значений в объекте, чтобы примитивы могут быть включены в действия, зарезервированные для объектов, как добавление в коллекцию, или возврат из метода с возвращаемое значение объекта.
2- Чтобы предоставить набор функций полезности для примитивы. Большинство из этих функций связаны с различными конверсии: преобразование примитивов в и из объектов String и конвертирующие примитивы и строковые объекты на разные базы и с разных оснований (или радиус), например двоичный, восьмеричный и шестнадцатеричный.
Ответ 3
Классы-оболочки являются неизменяемыми и, следовательно, не имеют методов setter. Каждый раз, когда вы хотите изменить его значение, новый объект должен быть создан. Это создало бы ненужные объекты. Int-примитив просто представляет биты числа. Вы не создаете никакого нового объекта. Поэтому я бы предложил использовать примитив, когда не использовал коллекции.
Ответ 4
Классы-оболочки могут быть весьма полезны, когда ваша система создает уровень неопределенности, который должен учитываться. Например, использование Boolean в программе захвата пакетов, например wirehark, позволит вам передать нулевое значение, если вам не удалось определить, был ли пакет изменен от отправителя. В частности, в случае, когда вы можете определить другие манипуляции с пакетами.
Ответ 5
При использовании примитивных типов в С# я предпочитаю использовать псевдоним С# в объявлениях и имя .NET при доступе к статическим членам. Это просто личное предпочтение. Оба названия абсолютно эквивалентны.
int x = Int32.Parse("123");