The String and StringBuffer Classes |
The Java compiler uses the String and StringBuffer classes behind the scenes to handle literal strings and concatenation.Literal Strings
In Java, you specify literal strings between double quotes:You can use literal strings anywhere you would use a String object. For example,"Hello World!"System.out.println()
accepts a String argument, so you could use a literal string in place of a String there.You can also use String methods directly from a literal string.System.out.println("And might I add that you look lovely today.");Because the compiler automatically creates a new String object for every literal string it encounters, you can use a literal string to initialize a String.int len = "Goodbye Cruel World".length();The above construct is equivalent to, but more efficient than, this one, which ends up creating two Strings instead of one:String s = "Hola Mundo";The compiler creates the first string when it encounters the literal string "Hola Mundo!", and the second one when it encountersString s = new String("Hola Mundo");new String()
.Concatenation and the + Operator
In Java, you can use+
to concatenate Strings together:This is a little deceptive because, as you know, Strings can't be changed. However, behind the scenes the compiler uses StringBuffers to implement concatenation. The above example compiles to:String cat = "cat"; System.out.println("con" + cat + "enation");You can also use theString cat = "cat"; System.out.println(new StringBuffer().append("con").append(cat).append("enation"));+
operator to append values to a String that are not themselves Strings:The compiler converts the non-String value (the integerSystem.out.println("Java's Number " + 1);1
in the example) to a String object before performing the concatenation operation.
The String and StringBuffer Classes |