org.mozilla.javascript

## Class ConsString

- java.lang.Object
- - org.mozilla.javascript.ConsString

All Implemented Interfaces:
  java.io.Serializable, java.lang.CharSequence

    public class ConsString
    extends java.lang.Object
    implements java.lang.CharSequence, java.io.Serializable

This class represents a string composed of two components, each of which may be a `java.lang.String` or another ConsString.

This string representation is optimized for concatenation using the "+" operator. Instead of immediately copying both components to a new character array, ConsString keeps references to the original components and only converts them to a String if either toString() is called or a certain depth level is reached.

Note that instances of this class are only immutable if both parts are immutable, i.e. either Strings or ConsStrings that are ultimately composed of Strings.

Both the name and the concept are borrowed from V8.

See Also:
  Serialized Form

### Constructor Summary

Constructors
Constructor and Description
`ConsString(java.lang.CharSequence str1, java.lang.CharSequence str2)`

### Method Summary

Methods
`char` `charAt(int index)`
`int` `length()`
`java.lang.CharSequence` `subSequence(int start, int end)`
`java.lang.String` `toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### ConsString

    public ConsString(java.lang.CharSequence str1,
              java.lang.CharSequence str2)

### Method Detail

#### toString

    public java.lang.String toString()

Specified by:
  `toString` in interface `java.lang.CharSequence`
Overrides:
  `toString` in class `java.lang.Object`

#### length

    public int length()

Specified by:
  `length` in interface `java.lang.CharSequence`

#### charAt

    public char charAt(int index)

Specified by:
  `charAt` in interface `java.lang.CharSequence`

#### subSequence

    public java.lang.CharSequence subSequence(int start,
                                     int end)

Specified by:
  `subSequence` in interface `java.lang.CharSequence`