Suche…


Einführung

In diesem Thema finden Sie eine Zusammenfassung der neuen Funktionen, die der Java-Programmiersprache in Java SE 7 hinzugefügt wurden. Es gibt viele andere neue Funktionen in anderen Bereichen wie JDBC und Java Virtual Machine (JVM), die nicht behandelt werden in diesem Punkt.

Bemerkungen

Verbesserungen in Java SE 7

Neue Funktionen der Programmiersprache Java SE 7

Binäre Literale

// 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;

Die try-with-resources-Anweisung

Das Beispiel liest die erste Zeile aus einer Datei. Es verwendet eine Instanz von BufferedReader , um Daten aus der Datei zu lesen. BufferedReader ist eine Ressource, die geschlossen werden muss, nachdem das Programm damit beendet wurde:

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

In diesem Beispiel ist die in der try-with-resources-Anweisung deklarierte Ressource ein BufferedReader . Die Deklarationsanweisung wird unmittelbar nach dem Schlüsselwort try in Klammern angezeigt. Die Klasse BufferedReader in Java SE 7 und höher implementiert die Schnittstelle java.lang.AutoCloseable . Da die BufferedReader Instanz in einer try-with-resource-Anweisung deklariert ist, wird sie unabhängig davon geschlossen, ob die try-Anweisung normal oder abrupt abgeschlossen wird (als Ergebnis der Methode BufferedReader.readLine , die eine IOException ).

Unterstriche in numerischen Literalen

Das folgende Beispiel zeigt andere Möglichkeiten, wie Sie den Unterstrich in numerischen Literalen verwenden können:

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;

Sie können Unterstriche nur zwischen Ziffern setzen. Unterstriche können an folgenden Stellen nicht gesetzt werden:

  • Am Anfang oder Ende einer Nummer
  • Angrenzend an einen Dezimalpunkt in einem Fließkomma-Literal
  • Vor einem Suffix von F oder L
  • An Stellen, an denen eine Ziffernfolge erwartet wird

Typinferenz für die Generierung einer generischen Instanz

Sie können verwenden

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

anstatt

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

Sie können jedoch nicht verwenden

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

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

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

weil es nicht kompilieren kann. Beachten Sie, dass der Diamant häufig in Methodenaufrufen funktioniert. Es wird jedoch empfohlen, den Diamanten hauptsächlich für Variablendeklarationen zu verwenden.

Zeichenfolgen in switch-Anweisungen

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow