home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Java Fundamental Classes Reference

Previous Chapter 2
Strings and Related Classes
Next
 

2.3 String Concatenation

Java's string concatenation operator (+) provides special support for the String and StringBuffer classes. If either operand of the binary + operator is a reference to a String or StringBuffer object, the operator is the string concatenation operator instead of the arithmetic addition operator. The string concatenation operator produces a new String object that contains the concatenation of its operands; the characters of the left operand precede the characters of the right operand in the newly created string.

If one of the operands of the + operator is a reference to a string object and the other is not, the operator converts the nonstring operand to a string object using the following rules:

  • A null operand is converted to the string literal "null".

  • If the operand is a non-null reference to an object that is not a string, the object's toString() method is called. The result of the conversion is the value returned by the object's toString() method, unless the return value is null, in which case the result of the conversion is the string literal "null".

  • A char operand is converted to a reference to a string object that has a length of one and contains that character.

  • An integer operand (other than char) is converted to a string object that contains the base 10 string representation of its value. If the value is negative, the string starts with a minus sign; if it is positive there is no sign character. If the value is zero, the result of the conversion is "0". Otherwise, the string representation of the integer does not have any leading zeros.

  • If the operand is a floating-point value, the exact string representation depends on the value being converted. If its absolute value is greater than or equal to 10^-3 or less than or equal to 10^7, it is converted to a string with an optional minus sign (if the value is negative) followed by up to eight digits before the decimal point, a decimal point, and the necessary number of digits after the decimal point (but no trailing zero if there is more than one significant digit). There is always a minimum of one digit after the decimal point.

  • Otherwise, the value is converted to a string with an optional minus sign (if the value is negative), followed by a single digit, a decimal point, the necessary number of digits after the decimal point (but no trailing zero if there is more than one significant digit), and the letter E followed by a plus or a minus sign and a base 10 exponent of at least one digit. Again, there is always a minimum of one digit after the decimal point.

  • The values NaN, NEGATIVE_INFINITY, POSITIVE_INFINITY, -0.0, and +0.0 are represented by the strings "NaN", "--Infinity", "Infinity", "--0.0", and "0.0", respectively.

  • A boolean operand is converted to either the string literal "true" or the string literal "false".

The following is a code example that uses the string concatenation operator:

// format seconds into hours, minutes, and seconds
String formatTime(int t) {
    int minutes, seconds;
    seconds = t%60;
    t /= 60;
    minutes = t%60;
    return t/60 + ":" + minutes + ":" + seconds;
}

Java uses StringBuffer objects to implement string concatenation. Consider the following code:

String s, s1, s2;
s = s1 + s2

To compute the string concatenation, Java's compiler generates this code:

s = new StringBuffer().append(s1).append(s2).toString()


Previous Home Next
StringBuffer Book Index StringTokenizer

Java in a Nutshell Java Language Reference Java AWT Java Fundamental Classes Exploring Java