티스토리 뷰
연료 주입 미션을 보면 예시 테스트 코드에 다음과 같이 System.getProperty()
를 사용해 개행문자를 상수로 만들어 사용한다.
public class RentCompanyTest {
private static final String NEWLINE = System.getProperty("line.separator");
}
당시에는 "개행문자
겠구나" 정도로 넘기고 "나중에 알아봐야지~"라는 생각을 했었다. (그때 그때 공부해야하는데 🥲 )
그러다 오찌, 짱구와 코드 부검을 하는 과정에서 오찌가 "OS 마다 개행 출력 문자가 다르다. %n
를 사용하는게 좋다."라는 조언을 해줬다. (땡큐 😆 )
이렇게 이 키워드를 두번이나 듣고 나니 드디어 공부를 해야겠다는 마음이 생겼다 👍
OS에 맞춰 개행 문자를 반환해주는 방법은 여러가지가 있다.
하나 하나 살펴보자!! (모두 같은 기능을 제공하니 상황에 맞춰서 사용하면 될 것 같다.)
System.lineSeparator()
Returns the system-dependent line separator string. It always returns the same value - the initial value of the system property line.separator. On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n".
Returns: the system-dependent line separator string
Since: 1.7
public static String lineSeparator() {
return lineSeparator;
}
우리가 자주 사용하는 System.out.println()
의 구현코드를 타고 타고 들어가보면 결국에는 여기서도 System.lineSeparator()
를 이용함을 알 수 있다.
public void newLine() throws IOException {
write(System.lineSeparator());
}
System.getProperty("line.separator")
Gets the system property indicated by the specified key.
getProperty()
에 개행을 의미하는 키 "line.separator"
를 넣어주어 사용한다.
public static String getProperty(String key) {
checkKey(key);
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPropertyAccess(key);
}
return props.getProperty(key);
}
이때 최종적으로 Properties 클래스
의 getProperty()
를 호출해 사용하는데, 보통 Properties
클래스는 시스템 정보를 저장한 properties 파일의 정보를 Map 형식
으로 불러와 사용한다고 한다. (이후에 Properties 클래스를 어디에 또 사용하는지 알아봐야겠다.)
%n
String.format()
에서 %n
는 개행을 의미한다.
따라서 String.format()
인자로 받는 System.out.printf()
에서도 %n
을 사용해주면 된다.
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
앞으로는..
내가 프로젝트의 View에서 System.out
을 이용해 어떻게 출력을 하는지 살펴보니 크게 다음의 세가지였다.
앞으로 나만의 방법을 찾아가야겠다 👍
String.format("%d개 일치 (%d원) - %d개\n", rank.matched(), rank.prize(), count);
System.out.println();
System.out.println("당첨 통계");
System.out.println("\n" + dealer.getName() + "와 " + String.join(CARD_DELIMITER, names) + "에게 2장을 나누었습니다.");
Ref.
https://codechacha.com/ko/java-line-separator/
'Backend > Java' 카테고리의 다른 글
Enum에서 상수를 사용하는 방법 (4) | 2022.03.17 |
---|---|
상속은 정말 나쁜가? (0) | 2022.03.17 |
스트림 병렬화는 주의해서 적용하자!! (0) | 2022.03.16 |
제네릭(Generic)의 기본 개념 (0) | 2022.03.07 |
@ParameterizedTest에도 각각의 이름을 부여할 수 있다?? (2) | 2022.03.04 |