티스토리 뷰
오늘은 저번글에 이어서 Java10부터 13버전까지의 주요 업데이트 사항을 정리해보겠다.
(각 버전별 참고 사이트를 링크해두었으니 더 자세한 내용을 보고싶으시면 해당 링크봐주시면 감사하겠습니다ㅎㅎ)
Java10(2018)
지역 변수 타입 추론(var)
var hello = "안녕하세요";
Java10부터 'var' 키워드를 사용하여 타입 추론을 지원하는 지역 변수를 선언할 수 있게되었다. 이를 통해 코드를 간결하게 만들 수 있게 되었다. 주의해야할 것은 'var' 키워드는 필드 및 메서드 파라미터에는 사용이 불가능하다. 또한 명시적인 초기화 없이는 지역 변수 선언을 사용할 수 없다.
public long process(var list) { } // 오류 발생!!!!
var x; // 오류 발생!!!
람다 클래스, 자료형 단축 표현 가능
// 이전
Predicate<String> nameValidation = (String x) -> x.length() > 0;
// 이후
Predicate<String> nameValidation = x -> x.lenght() > 0;
https://www.digitalocean.com/community/tutorials/java-10-features
Java 10 Features | DigitalOcean
www.digitalocean.com
Java11(2018.09)
Java11은 Java8 이후 두 번째 LTS(Long Term Support) 릴리스이다.
HTTP Client 개선
Java11에서는 'java.net.http.HttpClient' 클래스를 도입하여 기본적인 HTTP 클라이언트를 제공하기 시작했다.
HttpClient client = HttpClient.newHttpClient();
if문, for문 간략화
//이후
if (bool) foo(); else bar();
//이전
if (bool) { foo(); } else { bar(); }
//이후
for (int i : List.of(1, 2, 3)) foo(i);
//이전
for (int i : new int[] {1, 2, 3}) { foo(i); }
if문과 for문 안의 구현 들이 한줄이라면 중괄호를 생략할 수 있게 되었다.
'var' 변수를 람다에서 사용 가능
Consumer<String> printName = (var s) -> System.out.println("Name: " + s);
printName.accept("Kim"); // "Name: Kim" 출력
File Handling 간편화
//이후
String content = Files.readString(Paths.get(“file.txt”));
//이전
BufferedReader reader = new BufferedReader(new FileReader(“file.txt”));
String line;
while ((line = reader.readLine()) != null) {
…
}
reader.close();
String 메서드 추가
String 클래스에 다양한 메서드가 추가되었다.
- isBlank() : 공백과 빈문자열은 true를 반환한다.
- lines() : 문자열을 개행문자 기준으로 split()해주는 메서드이다.
- repeat(int) : 문자열을 간단히 반복해주는 메서드이다.
https://www.digitalocean.com/community/tutorials/java-11-features
Java 11 Features | DigitalOcean
www.digitalocean.com
Java12(2019.03)
새로운 switch 표현식
String dayName = switch (day) {
case 1, 2, 3, 4, 5 -> "Weekday";
case 6, 7 -> "Weekend";
default -> "Invalid day";
};
위의 switch 표현식이 도입도면서 더 코드를 더 간결히 사용할 수 있게되었다. 위의 코드를 기존의 switch 문으로 작성하기 위해서는 아래와 같이 작성해야했다. 코드의 가독성은 물론이고 개발자가 break를 작성하지 않는다면 다음 분기로 넘어가는 문제가 발생했다.
String dayName;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
dayName = "Weekday";
break;
case 6:
case 7:
dayName = "Weekend";
break;
default:
dayName = "Invalid day";
}
주의할 점은 새로운 switch 표현식에서는 break를 사용할 수 없다. 사용하면 컴파일 에러가 발생한다.
Unicode 언어 지원 추가
System.out.println(“\uD83D\uDE02”); // 기존 작성법
System.out.println(“😂”); // Java12 업데이트 후
https://www.digitalocean.com/community/tutorials/java-12-features
Java 12 Features | DigitalOcean
www.digitalocean.com
Java13(2019.09)
'yield'키워드 도입
int value = switch (greeting) {
case "hi" -> {
System.out.println("I am not just yielding!");
yield 1;
}
case "hello" -> {
System.out.println("Me too.");
yield 2;
}
default -> {
System.out.println("OK");
yield -1;
}
};
위 처럼 switch문 내부에 'yield' 키워드를 사용함으로써 특정 case에 부합한다면 값을 반환할 수 있게 되었다.
Text Block 사용가능
String str = "Hi\nHello\nYes"; // 기존
String textBlock = """
Hi
Hello
Yes"""; // 업데이트 후
Text Block 기능을 통해 문자열을 더욱 쉽고 가독성있게 작성할 수 있게되었다.
https://www.digitalocean.com/community/tutorials/java-13-features
Java 13 Features | DigitalOcean
www.digitalocean.com
'자바' 카테고리의 다른 글
[Java] Java 버전별 업데이트 사항(Java7~Java9) (0) | 2023.10.12 |
---|---|
[Java]Java에서 객체를 생성하는 5가지 방법 (0) | 2023.10.08 |
[Java] static 키워드가 뭘까? (0) | 2023.10.06 |
[Java] Map 인터페이스와 그 구현체들에 대해 알아보자. (0) | 2023.05.13 |
[Java] instanceof 와 getClass().equals()의 차이 (1) | 2023.04.25 |
- Total
- Today
- Yesterday
- java
- 1978
- 스프링
- this()
- arraylist
- 오류
- 7568
- list
- 대충 만든 자판
- 4673번
- 덧칠하기
- querydsl
- controller
- 프로그래머스
- 11659
- 사탕 게임#백준#3085
- 게시판#자바#JPA#Entity
- 1316번
- 서블릿#Servlet
- springboot
- 백엔드#게시판
- 백준
- 백준#잃어버린 괄호#1541
- 회고
- 자바
- 파이썬
- MVC
- 백준#서강근육맨#20300
- Spring
- HTTP#HTTP특징
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |