System.lineSeparator() returns nothing

12,918

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
Share:
12,918

Related videos on Youtube

Gero
Author by

Gero

Updated on June 04, 2022

Comments

  • Gero
    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
      NaveenBharadwaj almost 9 years
      It has added a new line. It doesn't show the escape character. Instead it does its behavior
    • Hacketo
      Hacketo almost 9 years
      \n is a newline, you don't expect to see a newline ?
    • GhostCat
      GhostCat almost 9 years
      Good advise for printing potentially invisible things: print something visible closely around, like println("thingy is: <" + whatever + ">");