Java Language
Java SE 7의 기능
수색…
소개
이 주제에서는 Java SE 7의 Java 프로그래밍 언어에 추가 된 새로운 기능에 대해 간략히 설명합니다. JDBC 및 JVM (Java Virtual Machine)과 같은 다른 분야에서는 많은 기능이 새로 추가되었습니다. 이 주제에서.
비고
새로운 Java SE 7 프로그래밍 언어 기능
- 2 진 리터럴 : 정수형 (byte, short, int 및 long)은 이진수 시스템을 사용하여 표현할 수도 있습니다. 2 진 리터럴을 지정하려면 접두사 0b 또는 0B를 번호에 추가하십시오.
- switch 문에 있는 문자열 : switch 문을 표현하는 String 객체를 사용할 수 있습니다.
- try-with-resources 문 : try-with-resources 문은 하나 이상의 리소스를 선언하는 try 문입니다. 리소스는 프로그램이 끝난 후에 닫아야하는 객체입니다. try-with-resources 문은 각 리소스가 문 끝에서 닫히도록합니다. java.io.Closeable을 구현하는 모든 객체를 포함하는 java.lang.AutoCloseable을 구현하는 객체는 모두 리소스로 사용할 수 있습니다.
- 개선 된 유형 검사를 통해 여러 예외 유형 검색 및 예외 재발생 : 단일 catch 블록은 두 가지 이상의 예외 유형을 처리 할 수 있습니다. 이 기능은 코드 중복을 줄이고 지나치게 광범위한 예외를 잡으려는 유혹을 줄입니다.
- 숫자 리터럴 의 밑줄 : 숫자 리터럴의 숫자 사이에 임의의 수의 밑줄 문자 (_)를 사용할 수 있습니다. 이 기능을 사용하면 예를 들어 숫자 리터럴에서 숫자 그룹을 분리 할 수 있으므로 코드의 가독성을 높일 수 있습니다.
- 일반 인스턴스 생성에 대한 유형 유추 : 컴파일러가 컨텍스트에서 형식 인수를 유추 할 수있는 경우 일반 클래스의 생성자를 호출하는 데 필요한 형식 인수를 빈 형식 매개 변수 집합 (<>)으로 바꿀 수 있습니다. 이 괄호 쌍은 비공식적으로 다이아몬드라고 불립니다.
- 수정 가능하지 않은 형식 매개 변수를 Varargs 메서드와 함께 사용할 때의 컴파일러 경고 및 오류 개선
이진 리터럴
// 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;
리소스 사용 시도 문
이 예제는 파일에서 첫 번째 행을 읽습니다. 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 키워드 바로 뒤에 괄호 안에 표시됩니다. Java SE 7 이후의 클래스 BufferedReader
는 java.lang.AutoCloseable
인터페이스 java.lang.AutoCloseable
구현합니다. BufferedReader
인스턴스는 try-with-resource 문으로 선언 되었기 때문에 try 문이 정상적으로 완료되는지 또는 갑자기 종료되는지에 관계없이 ( IOException
throw하는 BufferedReader.readLine
메서드의 결과로서) 닫혀집니다.
숫자 리터럴의 밑줄
다음 예제에서는 숫자 리터럴에서 밑줄을 사용할 수있는 다른 방법을 보여줍니다.
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