
Лекции Java / 10. Нововведения Java5. Нововведения Java7.pptx
.pdf
Самарский государственный аэрокосмический университет имени академика С.П. Королёва
Лекция 10.2
Нововведения Java7
© Составление, Гаврилов А.В., 2013
Самара
2013

План лекции
nБинарные литералы
nРазделители в числовых литералах
nСтроки в предложениях switch
nВывод типа
ntry с ресурсами
nОтлов исключений нескольких типов
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
42 |

Проблема
n Имеется:
int m1 = 130816; int m2 = 0377; int m3 = 0x780;
// Что это за числа???
int m1 = 0b11111111100000000; int m2 = 0b00000000011111111; int m3 = 0B00000011110000000;
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
43 |

Бинарные литералы
n Префиксы
•0b
•0B
nПолезны при работе с битовыми представлениями чисел, поскольку позволяют лучше видеть:
•саму структуру числа
0b0000111111110000 // 2040, 0x07f8
•взаимосвязь чисел
0b0000111111111111 // 4095, 0x0fff
0b1111000000000000 // 61440, 0xf000
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
44 |

Проблема
n Имеется:
double v1 = 7583432455435.324521;
double v2 = 532453245.3453425235;
// А это сколько, много или мало???
double v1 = 7_583_432_455_435.324_521;
double v2 = 532_453_245.345_342_523_52;
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
45 |

Подчеркивание в числовых литералах
n Можно использовать
•В литералах любых числовых типов
765_324_213_434L
•В литералах в любых системах счисления
0xFF_00_FF_00
•В нужных местах числа
1_23_456_7890
•В нужном количестве
6_____6
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
46 |

Подчеркивание в числовых литералах
n Нельзя использовать
• В начале и в конце числа
_123 123_
•Рядом с разделителем целой и дробной части
10_.01 10._01
•Перед суффиксами L, F и D
1_L |
1.1_F |
1.1_D |
•В строковых литералах с числами
"6_____6"
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
47 |

Проблема
n Имеется:
public static Gender convert(String s) { Gender g;
if (s.equals("м") || s.equals("муж") || s.equals("муж.") || s.equals("мужской")) { g = Gender.Male;
} else if (s.equals("ж") || s.equals("жен") || s.equals("жен.") || s.equals("женский")) {
g = Gender.Female; } else {
g = Gender.Unknown;
}
return g;
}
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
48 |

Проблема
n Хотелось бы:
public static Gender convert(String s) { Gender g;
switch (s) {
case "м": case "муж": case "муж.": case "мужской": g = Gender.Male; break;
case "ж": case "жен": case "жен.": case "женский": g = Gender.Female; break;
default:
g = Gender.Unknown; break;
}
return g;
}
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
49 |

Строки в предложениях switch
nВ качестве проверяемого значения можно указывать ссылку на объект строки
nВ качестве значений для сравнения можно указывать
•строковые литералы
•ссылки на строки, объявление которых снабжено модификатором final
nСравнение значений производится также, как если бы использовался метод String.equals()
•регистр имеет значение
•начальные и концевые пробелы имеют значение
Самарский государственный аэрокосмический университет имени академика С.П. Королёва |
50 |