나는 Effective Java를 읽고 있으며 %n
모든 곳에서 개행 문자를 사용 합니다. \n
Java 프로그램에서 개행 문자를 성공적으로 사용 했습니다.
어느 것이 '올바른'것입니까? 뭐가 문제 야 \n
? Java가이 C 규칙을 변경 한 이유는 무엇입니까?
\n
텍스트 형식의 플랫폼 특정 줄 바꿈으로 자동 변환 합니다. 여기를 참조 하십시오 . Java는 그렇지 않습니다.)
나는 Effective Java를 읽고 있으며 %n
모든 곳에서 개행 문자를 사용 합니다. \n
Java 프로그램에서 개행 문자를 성공적으로 사용 했습니다.
어느 것이 '올바른'것입니까? 뭐가 문제 야 \n
? Java가이 C 규칙을 변경 한 이유는 무엇입니까?
\n
텍스트 형식의 플랫폼 특정 줄 바꿈으로 자동 변환 합니다. 여기를 참조 하십시오 . Java는 그렇지 않습니다.)
답변:
빠른 Google에서 :
인수에 해당하지 않는 지정자도 하나 있습니다. 줄 바꿈을 출력하는 것은 "% n"입니다. 경우에 따라 "\ n"도 사용할 수 있지만 "% n"은 항상 올바른 플랫폼 별 줄 구분 기호를 출력하므로 플랫폼간에 이식 할 수 있지만 "\ n"은 그렇지 않습니다.
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html을 참조 하십시오.
"정답"은 정확히 무엇을 하려는지에 따라 다릅니다.
\ n은 항상 "unix 스타일"줄 끝을 제공합니다. \ r \ n은 항상 "dos style"줄 끝을 제공합니다. % n은 실행중인 플랫폼의 줄 끝을 제공합니다.
C는 이것을 다르게 처리합니다. "텍스트"또는 "바이너리"모드로 파일을 열도록 선택할 수 있습니다. 바이너리 모드에서 파일을 열면 \ n "유닉스 스타일"라인 엔딩을 제공하고 "\ r \ n"은 "dos 스타일"라인 엔딩을 제공합니다. dos / windows 시스템에서 "텍스트"모드로 파일을 열면 \ n 작성하면 파일 처리 코드가 파일을 \ r \ n으로 변환합니다. 따라서 텍스트 모드에서 파일을 열고 \ n을 사용하면 플랫폼 별 줄 끝이 표시됩니다.
Java 디자이너가 "텍스트"및 "바이너리"파일 모드에 대한 C의 엉뚱한 아이디어를 복제하고 싶지 않은 이유를 알 수 있습니다.
이 답변은 System.out.printf()
또는 System.out.format()
또는 Formatter
객체를 사용할 때만 참 입니다. %n
in 을 사용 하면 개행이 아닌 System.out.println()
단순히을 생성합니다 %n
.