The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Learning the Java Language
Lesson: Object and Data Basics

## Strings and the Java Compiler

> 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:

> >     "Hello World!"

> You can use literal strings anywhere you would use a `String` object. For example, `System.out.println` accepts a `String` argument, so you could use a literal string in place of a `String` there.

> >     System.out.println("Might I add that you look lovely today.");

> You can also use `String` methods directly from a literal string.

> >     int len = "Goodbye Cruel World".length();

> 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`.

> >     String s = "Hola Mundo";

> The above construct is equivalent to, but more efficient than, this one, which ends up creating two `String`s instead of one:

> >     String s = new String("Hola Mundo");

> The compiler creates the first string when it encounters the literal string "Hola Mundo!", and the second one when it encounters `new String`.

### Concatenation and the + Operator

> In Java, you can use `+` to concatenate `String`s together:

> >     String cat = "cat";
> >     System.out.println("con" + cat + "enation");

> This is a little deceptive because, as you know, `String`s can't be changed. However, behind the scenes the compiler uses `StringBuffer`s to implement concatenation. The above example compiles to:

> >     String cat = "cat";
> >     System.out.println(new StringBuffer().append("con").
> >                            append(cat).append("enation").toString());

> You can also use the `+` operator to append values to a `String` that are not themselves `String`s:

> >     System.out.println("Java's Number " + 1);

> The compiler converts the non-`String` value (the integer `1` in the example) to a `String` object before performing the concatenation operation.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form