Java 8 -> 11 변경점
Java 11 변경점
java x -> java 8로 변경된 것처럼 많은 변화는 있지 않습니다. 개발을 하며 사용할만한 변경점들에 대해서 알아보겠습니다.
1. String class
java 8에서는 문자열 다루는 관련 메서드가 적었습니다. 추가된 것들을 알아보겠습니다.
1-1. isBlank()
문자열이 비었거나, 공백인 경우를 판별해주는 메서드
String str1 = "";
String str2 = " ";
String str3 = " str";
System.out.println(str1.isBlank()); // true
System.out.println(str2.isBlank()); // true
System.out.println(str3.isBlank()); // false
1-2. lines()
문자열을 개행 단위로 쪼개어 스트림으로 반환해주는 메서드
String str = "str1\nstr2 \nstr3";
str.lines()
.forEach(System.out::println);
// str1
// str2
// str3
1-3. repeat()
문자열을 n번 반복하고 이어서 반환해주는 메서드
String str = "str";
String repeatStr = str.repeat(3);
System.out.println(repeatStr); // strstrstr
1-4. stripLeading, stripTrailing, strip
각각 문자열 앞, 뒤, 모두 공백 제거 해주는 메서드
String str = " str ";
System.out.println(str.stripLeading()); //str
System.out.println(str.stripTrailing());// str
System.out.println(str.strip()); //str
2. java.nio.file.Files 유틸 클래스
파일에 대해 여러 작업을 수행할 수 있는 메서드들이 추가됨
2-1. writeString()
파일에 문자열을 쓰고, 경로를 반환해주는 메서드 charset 설정이 가능하며, 설정하지 않는다면 utf-8로 설정된다.
OpenOption은 여러가지 가 있고 설명하지는 않겠습니다.
String path = Files.writeString("filePath", "string", StandardOpenOption.WRITE).toString();
2-2. readString()
파일의 내용을 String 으로 반환해주는 메서드
String path = Files.readString(Path.of("path"));
2-3. isSameFile()
경로를 확인하여, 같은 파일인지 확인해주는 메서드
boolean isSameFile = Files.isSameFile(Path.of("path1"), Path.of("path2"));
3. 람다인자에 var 사용
var키워드는 java 10에서 도입됐고, 11에서 람다의 인자에서 사용할 수 있게 됐습니다.
var는 컴파일 시기 타입 추론으로서 코드의 모호함을 증가시켜 복잡성을 증가시킬 수 있습니다. 따라서 남용해서는 안되고, 11에서 도입된 람다 인자에서 var 사용이 대표적인 좋은 예입니다.
람다의 인자에서는 어노테이션을 추가할 수 없지만 var를 사용한 경우 아래와 같이 어노테이션을 추가할 수 있습니다.
list.stream()
.map((@NotNull var s) -> s.toLowerCase())
.collect(Collectors.toList());
4. Predicate.not()
Predicate에서 .not() 메서드를 통해서 부정을 반환할 수 있습니다.
간단히 해석해보면, 3보다 작은 것들의 부정이므로 3보다 같거나 큰 것들을 통과시킬 수 있습니다.
List<String> collect = strs.stream()
.filter(Predicate.not(str -> str.length() < 3))
.collect(Collectors.toList());
정리
String, Files에 관련 메서드들이 추가됐으며, 가장 눈여겨볼 것은 람다 인자에서의 어노테이션으로 생각합니다. 해당 게시글에서는 GC, java 파일 실행(컴파일 없이 실행 가능) 등등 부분은 제외했습니다.
'JAVA' 카테고리의 다른 글
API 공통 응답 형식 정하기 (1) | 2023.10.23 |
---|---|
Java Null 처리에 대한 여정 (0) | 2023.10.16 |
Java Garbage Collection (0) | 2022.05.30 |
이펙티브 자바 (0) | 2022.04.22 |
JAVA Overloading & Overriding (0) | 2022.02.26 |
댓글
이 글 공유하기
다른 글
-
API 공통 응답 형식 정하기
API 공통 응답 형식 정하기
2023.10.23 -
Java Null 처리에 대한 여정
Java Null 처리에 대한 여정
2023.10.16 -
Java Garbage Collection
Java Garbage Collection
2022.05.30 -
이펙티브 자바
이펙티브 자바
2022.04.22