Java SE 13 introduced Text Blocks (or Multiline Strings) feature. What are its differences and the similarities with the existing string representation?
What is the Text Blocks (or Multiline Strings) feature in Java?
11k Views Asked by Arvind Kumar Avinash At
1
There are 1 best solutions below
Related Questions in JAVA
- Can MVC.NET prevent SQL-injection at razor or controller level?
- SQL server not returning all rows
- When dealing with databases, does adding a different table when we can use a simple hash a good thing?
- Creating a parametrized field name for a SELECT clause
- Combine two rows based on common ID
- Column displays each count
- Slick query for one to optional one (zero or one) relationship
- Aggregate and count in PostgreSQL
- MAX and GROUP BY - SQL
- SQL statement for a tricky 2 table query
Related Questions in JAVA-15
- Can MVC.NET prevent SQL-injection at razor or controller level?
- SQL server not returning all rows
- When dealing with databases, does adding a different table when we can use a simple hash a good thing?
- Creating a parametrized field name for a SELECT clause
- Combine two rows based on common ID
- Column displays each count
- Slick query for one to optional one (zero or one) relationship
- Aggregate and count in PostgreSQL
- MAX and GROUP BY - SQL
- SQL statement for a tricky 2 table query
Related Questions in JAVA-TEXT-BLOCKS
- Can MVC.NET prevent SQL-injection at razor or controller level?
- SQL server not returning all rows
- When dealing with databases, does adding a different table when we can use a simple hash a good thing?
- Creating a parametrized field name for a SELECT clause
- Combine two rows based on common ID
- Column displays each count
- Slick query for one to optional one (zero or one) relationship
- Aggregate and count in PostgreSQL
- MAX and GROUP BY - SQL
- SQL statement for a tricky 2 table query
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
What is a text block?
A text block is a multi-line string literal and the feature offers a clean way to format the string in a predictable way, without using most of the escape sequences. It starts and ends with a
"""
(three double-quotes marks) e.g.Output:
With the traditional string representation, the code would look like
Another key difference is that a text block begins with three double-quote characters followed by a line terminator which is not the case with the traditional string representation. It means
The text block can not be put on a single line.
The content of the text block can not follow the three opening double quotes on the same line.
This was a much-needed feature in Java.
A note about how it compares with text block in Kotlin (a modern JVM-based language):
\
inside the text block which makes writing a RegEx expression easier e.g. the following is a valid text block in Kotlin but invalid in Java:In Java, one will have to write it as
A note about indentation:
The compiler shifts the complete text block to the left and then retains the specified spacing.
Demo:
Output:
Is it available only as a Preview Feature?
It remained available in Java SE 13 and Java SE 14 as a Preview Feature and has been standardised with Java SE 15. With Java SE 13 and 14, like any Preview Feature, it has to be compiled and executed with
--enable-preview
option e.g.To compile:
To execute:
Are they stored in the String Pool?
Yes, they are. The text blocks are compiled to the same type as that of the traditional
String
value i.e. the byte code does not distinguish between a traditionalString
value and a text block.Output:
Can a text block be concatenated with another string?
Yes, a text block can be concatenated to a traditional string value or another text block in the same way, the traditional
String
values are concatenated. As already described above, the byte code does not distinguish between a traditionalString
value and text block.Output:
Note that I have put whitespace after
Hello
instr1
and another whitespace beforeJava rocks!
instr3
.Does it support Escape Sequences?
Yes, the escape sequences will be evaluated in the traditional way e.g.
Output:
Does it support replaceable parameters?
Yes, you can replace a parameter in the text block using
%s
or$<<replaceable-parameter>>
as shown below:Output: