System.lineSeparator() returns nothing
As you expect, the line separator contains special characters such as '\r'
or '\n'
that denote the end of a line. However, although they would be written in Java source code with those backslash escape sequences, they do not appear that way when printed. The purpose of a line separator is to separate lines, so, for example, the output of
System.out.println("Hello"+System.lineSeparator()+"World");
is
Hello
World
rather than, say
Hello\nWorld
You can even see this in the output of your code: the output of
System.out.println("LineSeperator1: "+System.getProperty("line.separator"));
had an extra blank line before the output of the next statement, because there was a line separator from System.getProperty("line.separator")
and another from the use of println
.
If you really want to see what the escaped versions of the line separators look like, you can use escapeJava
from Apache Commons. For example:
import org.apache.commons.lang3.StringEscapeUtils;
public class LineSeparators {
public static void main(String[] args) {
String ls1 = StringEscapeUtils.escapeJava(System.getProperty("line.separator"));
System.out.println("LineSeperator1: "+ls1);
String ls2 = StringEscapeUtils.escapeJava(System.lineSeparator());
System.out.println("LineSeperator2: "+ls2);
}
}
On my system, this outputs
LineSeparator1: \n
LineSeparator2: \n
Note that I had to run it in the same folder as the .jar file from the Apache download, compiling and running with these commands
javac -cp commons-lang3-3.4.jar LineSeparators.java
java -cp commons-lang3-3.4.jar:. LineSeparators
Related videos on Youtube
Gero
Updated on June 04, 2022Comments
-
Gero almost 2 years
What should I see when I use the following?
System.out.println("LineSeperator1: "+System.getProperty("line.separator")); System.out.println("LineSeperator2: "+System.lineSeparator());
I get the following back:
LineSeperator1: LineSeperator2:
Is it empty? invisible? shouldn there be something like
\r or \n
?I use windows 7, eclipse and jdk 1.8.
-
NaveenBharadwaj almost 9 yearsIt has added a new line. It doesn't show the escape character. Instead it does its behavior
-
Hacketo almost 9 years
\n
is a newline, you don't expect to see a newline ? -
GhostCat almost 9 yearsGood advise for printing potentially invisible things: print something visible closely around, like println("thingy is: <" + whatever + ">");
-