Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Компьютерная литература > Статьи по Java


Автор: hkdkest 10.1.2010, 13:42
http://codingrus.ru/articles.php?cat_id=14

Изучение новых функциональных возможностей, включенных в последнюю версию Java 2 5.0, начнем с так долго ожидаемых всеми программистами на языке Java автоупаковки (autoboxing) и автораспаковки (auto-unboxing). Выбор этот сделан по трем причинам. Во-первых, автоупаковка/автораспаковка сильно упрощает и рационализирует исходный код, в котором требуется объектное представление базовых типов языка Java, таких как int или char. Поскольку такие ситуации часто встречаются в текстах программ на Java, выигрыш от применения средств автоупаковки/распаковки получат практически все, программирующие на этом языке. Во-вторых, автоупаковка/автораспаковка во многом способствует простоте и удобству применения другого нового средства — настройки типов (generics). Следовательно, понимание автоупаковки и автораспаковки понадобится для последующего изучения этого механизма. В-третьих, автоупаковка/распаковка плавно изменяет наши представления о взаимосвязи объектов и данных базовых типов. Эти изменения гораздо глубже, чем может показаться на первый взгляд из-за концептуальной простоты двух описываемых здесь новых функциональных возможностей. Их влияние ощущается во всем языке Java.
Автоупаковка и автораспаковка напрямую связаны с оболочками типов (type wrapper) языка Java и со способом вставки значений в экземпляры таких оболочек и извлечения значений из них. По этой причине мы начнем с краткого обзора оболочек типов и процесса упаковки и распаковки значений для них.
Обзор оболочек типов и упаковки значений
Как вам известно, в языке Java используются базовые типы (также называемые простыми), такие как int или double, для хранения элементарных данных типов, поддерживаемых языком. Для хранения таких данных из-за более высокой производительности применяются базовые типы, а не объекты. В этом случае использование объектов добавляет неприемлемые издержки даже к простейшей вычислительной операции. Таким образом, базовые типы не являются частью иерархии объектов и не наследуют класс Object.
Несмотря на выигрыш в производительности, предлагаемый базовыми типами, возникают ситуации, требующие обязательного объектного представления. Например, Вы не можете передать в метод переменную базового типа как параметр по ссылке. Кроме того, много стандартных cтруктур данных, реализованных в языке Java, оперирует объектами, и, следовательно, Вы не можете использовать эти структуры для хранения данных базовых типов. Для подобных (и других) случаев Java предоставляет оболочки типов, представляющие собой классы, которые инкапсулируют данные простого типа в объект. Далее перечислены классы оболочки типов.
• http://codingrus.ru/readarticle.php?article_id=629
• http://codingrus.ru/readarticle.php?article_id=630
• http://codingrus.ru/readarticle.php?article_id=631
• http://codingrus.ru/readarticle.php?article_id=632
• http://codingrus.ru/readarticle.php?article_id=633
• http://codingrus.ru/readarticle.php?article_id=634
• http://codingrus.ru/readarticle.php?article_id=635
• http://codingrus.ru/readarticle.php?article_id=636
• http://codingrus.ru/readarticle.php?article_id=637
• http://codingrus.ru/readarticle.php?article_id=638
• http://codingrus.ru/readarticle.php?article_id=639
• http://codingrus.ru/readarticle.php?article_id=640
• http://codingrus.ru/readarticle.php?article_id=641
• http://codingrus.ru/readarticle.php?article_id=642
• http://codingrus.ru/readarticle.php?article_id=643
• http://codingrus.ru/readarticle.php?article_id=644
• http://codingrus.ru/readarticle.php?article_id=645
• http://codingrus.ru/readarticle.php?article_id=646
• http://codingrus.ru/readarticle.php?article_id=647
• http://codingrus.ru/readarticle.php?article_id=648
• http://codingrus.ru/readarticle.php?article_id=649
• http://codingrus.ru/readarticle.php?article_id=650
• http://codingrus.ru/readarticle.php?article_id=651
• http://codingrus.ru/readarticle.php?article_id=653
• http://codingrus.ru/readarticle.php?article_id=654
• http://codingrus.ru/readarticle.php?article_id=655
• http://codingrus.ru/readarticle.php?article_id=656
• http://codingrus.ru/readarticle.php?article_id=657
• http://codingrus.ru/readarticle.php?article_id=658
• http://codingrus.ru/readarticle.php?article_id=659
• http://codingrus.ru/readarticle.php?article_id=660
• http://codingrus.ru/readarticle.php?article_id=661
• http://codingrus.ru/readarticle.php?article_id=662
• http://codingrus.ru/readarticle.php?article_id=663
• http://codingrus.ru/readarticle.php?article_id=664
• http://codingrus.ru/readarticle.php?article_id=665
• http://codingrus.ru/readarticle.php?article_id=666
• http://codingrus.ru/readarticle.php?article_id=667
• http://codingrus.ru/readarticle.php?article_id=668
• http://codingrus.ru/readarticle.php?article_id=669
• http://codingrus.ru/readarticle.php?article_id=670
• http://codingrus.ru/readarticle.php?article_id=671
• http://codingrus.ru/readarticle.php?article_id=672
• http://codingrus.ru/readarticle.php?article_id=673
• http://codingrus.ru/readarticle.php?article_id=674
• http://codingrus.ru/readarticle.php?article_id=675
• http://codingrus.ru/readarticle.php?article_id=676
• http://codingrus.ru/readarticle.php?article_id=677

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)