Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Haulmont-презентации Java / Haulmont. java_se_8.ppt
Скачиваний:
28
Добавлен:
16.03.2015
Размер:
1.04 Mб
Скачать

Нововведения Java 5.0.

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Цели занятия

2 Изучить:

•Статический импорт

•Автоупаковка и автораспаковка (автобоксинг)

•Аргументы переменной длины

•Настраиваемые типы

•Улучшенный цикл for

•Перечислимые типы

•Метаданные

•Форматированный ввод/вывод

•Изменения пакетов

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Статический импорт

3Имеется:

hypot = Math.sqrt(Math.pow(side1, 2) + Math.pow(side2, 2));

Хотелось бы:

hypot = sqrt(pow(side1, 2) + pow(side2, 2));

Импорт элемента типа

import static pkg.TypeName.staticMemberName; import static java.lang.Math.sqrt;

import static java.lang.Math.pow;

Импорт всех элементов типа import static pkg.TypeName.*; import static java.lang.Math.*;

Помимо импорта статических членов классов и интерфейсов, определенных в API языка Java, вы можете использовать это средство для импорта статических членов классов и интерфейсов, созданных вами

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

 

Особенности статического

4

импорта

Повышает удобство написания программ и

 

уменьшает объем кода

Уменьшает удобство чтения программ

Приводит к конфликтам имен

Вывод: рекомендуется к использованию

 

только когда действительно необходим

 

(статический импорт желателен в тех

 

случаях, когда статический член

 

используется многократно)

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Автоупаковка / автораспаковка

5

• Имеется:

List list = new LinkedList(); list.add(new Integer(1)); list.add(new Integer(10));

• Хотелось бы:

List list = new LinkedList(); list.add(1);

list.add(10);

Автоупаковка – процесс автоматической инкапсуляции данных простого типа в экземпляр соответствующего ему класса- обертки в случаях, когда требуется значение

ссылочного типа

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Автоупаковка / автораспаковка

6

Автораспаковка – процесс автоматического извлечения примитивного значения из объекта- упаковки в случаях, когда требуется значение примитивного типа

List list = new LinkedList(); list.add(1);

int b = (Integer)list.get(0) + 10;

• С появлением Java 2 v5.0 стало возможным использование объекта типа Boolean для управления оператором if и любыми операторами цикла языка Java

Boolean b;

//

while (b) { //

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Автоупаковка / автораспаковка

7

• Кроме удобства, которое предоставляет механизм автоупаковки/распаковки, он может помочь в предупреждении ошибок

• Так как автоупаковка всегда создает правильный объект, а автораспаковка всегда извлекает надлежащее значение, не возникает ситуаций для формирования неверного типа объекта или значения

• В тех случаях, когда вам нужен тип, отличающийся от созданного автоматическим процессом, вы и сейчас можете упаковывать и распаковывать значения вручную так, как делали это раньше

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

 

Особенности автоупаковки

8

Происходит при присваивании, вычислении

 

выражений и при передаче параметров

Объекты создаются без использования

 

ключевого слова new

 

Integer i = 15;

Ошибочно полагать, что примитивные типы не

 

нужны (для хранения элементарных типов

 

данных из-за более высокой

 

производительности применяются базовые

 

типы, а не объекты)

Автоупаковка требует существенных ресурсов

Злоупотреблять автоупаковкой не стоит

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Аргументы переменной длины

9

• Имеется:

int s1 = sum(new int[] {1, 2}); int s2 = sum(new int[] {1, 2, 3});

• Хотелось бы:

int s1 = sum(1, 2);

int s2 = sum(1, 2, 3, 4);

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Аргументы переменной длины

10 Пример 1

int sum(int ... a) { int s = 0;

for (int i = 0; i < a.length; i++) s += a[i];

return s;

}

int s2 = sum(1, 2, 3);

int s1 = sum(new int[] {1, 2});

Все права защищены. www.haulmont.ru info@haulmont.com

© HAULMONT, 2013

Соседние файлы в папке Haulmont-презентации Java