Line terminator character is platform specific.
You can find the line termination character for your platform using System.lineSeparator()API call
On my windows machine, I get "\r\n" as the line termination character.
jshell> System.lineSeparator()
$1 ==> "\r\n"
Unix & Linux uses "\n" as line termination character & some older versions of Mac OS uses "\r" as line termination character.
This poses a few issues with handling multi-line string literals represented by text blocks
- Some editor used may automatically change the line termination character
- When the source file gets edited on different platforms, there is a chance of getting different line termination characters getting used within the same text block.
To avoid these issues, Java compiler normalizes line termination character inside the multi-line string literal in text blocks to '\n' while processing. So, all the different line termination characters "\r", "\r\n" and "\n" becomes "\n" after processing a text block.
Let us check this with the below program:
Code is shown as an image to make the line termination characters visible. Here the line termination character is "\r\n" represented by CR|LF
This produces the following output
Comparing with \n:true
Comparing with \r\n:false
indicating that \r\n line termination character in the source code is converted to \n after the text block is processed.
Below is the version of the code for copy/pasting if needed.
public class Main {
public static void main(String[] args) {
String poemTextBlock = """
And miles to go before I sleep.
""";
System.out.println("Comparing with \\n:" + "And miles to go before I sleep.\n".equals(poemTextBlock));
System.out.println("Comparing with \\r\\n:" + "And miles to go before I sleep.\r\n".equals(poemTextBlock));
}
}
In the next post, we will see if and how of using escape sequences within text blocks
No comments:
Post a Comment