Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JS
- GitHub
- jetbrains
- CPP
- ruby
- ruby2d
- C
- boj
- Python
- Baekjoon
- 루비
- maven
- OTLanguage
- Godot
- gnuplot
- OAuth
- rubymine
- gradle
- Vane
- react
- Android
- RaspberryPi
- Shell
- Java
- 개발노트
- plugin
- IntelliJ
- kotlin
- Spring
- error
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[Java21] jdk21 새로운 기능 1 사용해보기 (formatted) 본문
jdk21로 올라오면서 새로운 방식의 format이 추가 되었습니다. 평소에 자바는 format에 대한 지원이 약하다고 생각이 들어왔지만 이제는 해당 부분들을 해결할려고 하는 것 처럼 보였습니다.
기존 format
StringBuilder 방식
int a = 1;
int b = 2;
StringBuilder value = new StringBuilder()
.append(a)
.append(" + ")
.append(b).append(" = ")
.append(a + b);
System.out.println(value);
String.format 방식
int a = 1;
int b = 2;
String value = String.format("%d + %d = %d", a, b, a + b);
System.out.println(value);
+ 연산자 방식
int a = 1;
int b = 2;
String value = a + " + " + b + " = " + (a + b);
System.out.println(value);
(jdk 21)
formatted 사용법
보통 static으로 가져오는 String.format과 다른게 String내부 함수로 선언되어 있다는 특징을 가지는 특징으로 변경되었습니다.
int a = 1;
int b = 2;
String value = "%d + %d = %d".formatted(a, b, a + b);
System.out.println(value);
응용 버전
format을 할때 순서를 변경하여 format을 하는 방법입니다. 포맷 인수 사이에 <숫자>$형태로 format순서를 지정하는 방법을 이용하여 순서를 변경하는 방법은 다음과 같습니다.
(ex. %d -> %1$d)
다음 예제는 3, 2, 1순서대로 format을 하였기 때문에 a + b, b, a 순서대로 format이 되는 것을 확인 할 수 있었습니다.
int a = 1;
int b = 2;
String value = "%3$d + %2$d = %1$d".formatted(a, b, a + b);
System.out.println(value);
출력
3 + 2 = 1
기타
jdk21 릴리즈 노트에 STR template라는 것도 추가된 듯 보이는데 jshell에서 --enable-preview옵션을 넣어야지 동작을 하는 듯 보였습니다.
jshell --enable-preview
--enable-preview 옵션을 주지 않으면 다음과 같이 에러가 발생하더군요.
'Language > Java' 카테고리의 다른 글
Cause: error: invalid source release: 21 해결 방법 (2) | 2023.09.26 |
---|---|
[IntelliJ] 인텔리제이에서 Java21 설치하는 법 (jdk21) (0) | 2023.09.26 |
[IntelliJ] 인텔리제이 Unsupported class file major version 65 에러 (+ jdk 21) (0) | 2023.09.26 |
[Java] BadWordFiltering 2 (욕설 필터링 라이브러리) (0) | 2023.04.11 |
[Java] BadWordFiltering (욕, 비속어 필터 라이브러리) (3) | 2023.04.11 |