Поиск…


Вступление

В этом разделе вы найдете краткое описание новых функций, добавленных в язык программирования Java в Java SE 7. В других областях, таких как JDBC и Java Virtual Machine (JVM), есть много других новых функций, которые не будут охвачены в этой теме.

замечания

Усовершенствования в Java SE 7

Новые возможности языка программирования Java SE 7

Бинарные литералы

// An 8-bit 'byte' value:
byte aByte = (byte)0b00100001;

// A 16-bit 'short' value:
short aShort = (short)0b1010000101000101;

// Some 32-bit 'int' values:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
int anInt3 = 0B101; // The B can be upper or lower case.

// A 64-bit 'long' value. Note the "L" suffix:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;

Оператор try-with-resources

В примере читается первая строка из файла. Он использует экземпляр BufferedReader для чтения данных из файла. BufferedReader - это ресурс, который должен быть закрыт после завершения программы:

static String readFirstLineFromFile(String path) throws IOException {
  try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    return br.readLine();
  }
}

В этом примере ресурс, объявленный в инструкции try-with-resources, представляет собой BufferedReader . Оператор объявления появляется в круглых скобках сразу после ключевого слова try. Класс BufferedReader , в Java SE 7 и более поздних версиях, реализует интерфейс java.lang.AutoCloseable . Поскольку экземпляр BufferedReader объявлен в инструкции try-with-resource, он будет закрыт независимо от того, завершает ли оператор try нормально или внезапно (в результате метода BufferedReader.readLine генерирует IOException ).

Подчеркивает числовые литералы

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

long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;

Вы можете разместить символы подчеркивания только между цифрами; вы не можете размещать символы подчеркивания в следующих местах:

  • В начале или конце номера
  • Рядом с десятичной точкой в ​​литерале с плавающей запятой
  • До суффикса F или L
  • В позициях, где ожидается строка цифр

Тип вывода для создания общего экземпляра

Ты можешь использовать

Map<String, List<String>> myMap = new HashMap<>();

вместо

Map<String, List<String>> myMap = new HashMap<String, List<String>>();

Однако вы не можете использовать

List<String> list = new ArrayList<>();
list.add("A");

  // The following statement should fail since addAll expects
  // Collection<? extends String>

list.addAll(new ArrayList<>());

потому что он не может скомпилировать. Обратите внимание, что бриллиант часто работает в методах; однако предлагается использовать алмаз в основном для объявлений переменных.

Строки в операторах

public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
     String typeOfDay;
     switch (dayOfWeekArg) {
         case "Monday":
             typeOfDay = "Start of work week";
             break;
         case "Tuesday":
         case "Wednesday":
         case "Thursday":
             typeOfDay = "Midweek";
             break;
         case "Friday":
             typeOfDay = "End of work week";
             break;
         case "Saturday":
         case "Sunday":
             typeOfDay = "Weekend";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }
     return typeOfDay;
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow