자바의 이전 버전에서는 우리는 컴파일을 한 뒤에야 코드를 실행할 수 있었습니다. 하지만 자바 11부터는 우리는 컴파일 없이 바로 코드를 실행할 수 있습니다.
우리가 샘플.java 파일을 갖고 있고 컴파일 없이 자바 11에서 코드를 바로 실행할 수 있다고 가정하자.
Collection to an Array:
우리는 자바 11에서 toArray() 메서드를 통해 간단하게 컬렉션을 배열로 변환할 수 있다.
public class Test {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("LoveToLearn", "Anil");
String[] sampleArray = sampleList.toArray(String[]::new);
System.out.println(Arrays.toString(sampleArray));
}
}
Console Output : [LoveToLearn, Anil]
String class에 새로운 유틸 메서드
자바11에서 String클래스는 6개의 새로운 메서드가 소개되었습니다.
repeat(int): repeat메서드는 int형으로 입력된 만큼 단순히 문자열을 반복한다.
public class Repeat {
public static void main(String[] args) {
String s = "java11";
String str = s.repeat(5);
System.out.println(str);
}
}
Console Output : java11java11java11java11java11
line(): line메서드는 행으로 나눠진 문자열을 모아 스트림의 형태로 반환한다.
public class Lines {
public static void main(String[] args) {
String str = "JD\nJD\nJD";
System.out.println(str);
System.out.println(str.lines().collect(Collectors.toList()));
}
}
Console Output : JD
JD
JD
[JD, JD, JD]
isBlank(): isBlank() 메서드는 boolean 값을 리턴하며, 비어있는 문자열이나 오직 공백만 존재하는 문자열을 true를 리턴한다.
public class Blank {
public static void main(String[] args) {
String str = "";
String str1 = " ";
System.out.println(str.isBlank());
System.out.println(str1.isBlank());
}
}
Console Output : true
true
stripLeading(): stripLeading 메서드는 문자열의 시작 부분에 공백을 제거할 때 사용한다.
public class Check {
public static void main(String[] args) {
String str = " java ";
System.out.println("before using strip-leading method");
System.out.print("+");
System.out.print(str);
System.out.println("+");
System.out.println("after using strip-leading method");
System.out.print("+");
System.out.print(str.stripLeading());
System.out.print("+");
}
}
Console Output: before using strip-leading method
+ java +
after using strip-leading method
+java +
stripTrailing() :stripTrailing() 메서드는 문자열의 끝 부분에 공백을 제거할 때 사용한다.
public class Check {
public static void main(String[] args) {
String str = " java ";
System.out.println("before using strip-trailing method");
System.out.print("+");
System.out.print(str);
System.out.println("+");
System.out.println("after using strip-trailing method");
System.out.print("+");
System.out.print(str.stripTrailing());
System.out.print("+");
}
}
Console Output: before using strip-leading method
+ java +
after using strip-leading method
+ java+
strip(): strip() 메서드는 문자열의 시작 부분과 끝부분의 공백을 제거할 때 사용한다.
public class StripCheck {
public static void main(String[] args) {
String str = " java ";
System.out.println("before using strip-trailing method");
System.out.print("+");
System.out.print(str);
System.out.println("+");
System.out.println("after using strip-trailing method");
System.out.print("+");
System.out.print(str.strip());
System.out.print("+");
}
}
Console Output: before using strip-leading method
+ java +
after using strip-leading method
+java+
Local-Variable Syntax for Lambda Parameters:
자바에서 var키워드는 지역변수를 선언하는 데 사용됩니다. var은 java10 버전에서 자바의 타입 추론을 개선하기 위해 소개되었습니다.
변수 이름과 함께 타입을 사용하는 것을 피해기 위해 자바 11에서는 var를 람다식 파라미터에 사용할 수 있습니다. 이전 버전에서는 람다식에서 var를 사용할 수 없었지만 현재는 사용할 수 있습니다.
interface Add{
int sum(int a, int b);
}
public class Check {
public static void main(String[] args) {
//before java11 only below two are possible
Add Add = ( a, b)-> a+b;
int result = Add.sum(10, 20);
System.out.println(result);
Add Add1 = (int a, int b)-> a+b;
int result1 = Add.sum(10, 20);
System.out.println(result1);
//after java11 we can also var
Add Add2 = (var a, var b)-> a+b;
int result2 = Add.sum(10, 20);
System.out.println(result2);
}
}
var 타입 사용 시 주의 사항
1. 하지만 람다식에서 파라미터에 var키워드를 사용할 땐 타입 스킵은 불가능합니다.
2. var는 다른 타입의 변수와 혼합해서 사용할 수 없습니다.
3. 람다식에서 var 키워드를 사용하려면 괄호가 필요합니다.
Reading/Writing Strings to and from the Files:
writeString() : writeString() 메서드는 파일의 내용을 쓰는 데 사용합니다.
readString() : readString() 메서드는 파일의 내용을 읽는 데 사용합니다.
isSameFile() :isSameFile() 메서드는 두 Path가 같은 파일을 가리킨다면 true, 아니면 false를 반환한다.
Files.isSameFile(Path.of("/Users/test.txt"), Path.of("/Users/test.txt"));
'BE > Java' 카테고리의 다른 글
[Java] List를 정렬하는 여러가지 방법 (2) | 2022.11.23 |
---|---|
String vs StringBuffer vs StringBuilder (0) | 2022.11.07 |
[Java] 객체 지향 설계 5원칙(SOILD) (0) | 2022.08.31 |
자바의 대표적인 빌드 관리 툴 메이븐과 그레이들 (2) | 2022.08.10 |
일급 컬렉션 (First Class Collection) 이란? (0) | 2022.07.18 |