是字符串数据类型。

字符串是C、Java、VB等编程语言中的字符串。字符串是一个特殊的对象,属于引用类型。在Java中,C#。创建string类对象后,一旦初始化字符串,就不能对其进行更改。因为string类中的所有字符串都是常量,所以不能更改数据。因为string对象是不可变的,所以可以共享它。对string类的任何更改都会返回一个新的string类对象。C标准库中的string类以类型的形式封装字符串,并包含字符序列的操作。string类是不可变的。对string类的任何更改都将返回一个新的string类对象。通过这种方式,string类的引用被传递给一个方法,该方法对字符串和原始引用所指向的对象的任何更改都没有影响,这与基本数据类型类似。
字符常量是指在程序中直接使用的不可改变的字符值。它们是由单个字符组成的常量,在程序中用来表示特定的字符,例如字母、数字或特殊符号。字符常量通常用单引号括起来,以区分其与字符串常量。在程序中,字符常量可以用于赋值、比较和输出等操作,是编程语言中的基本数据类型之一。由于其不可改变的特性,字符常量在程序中具有常量的特点,可以提高程序的可读性和可维护性。在C、C++、Java等编程语言中,字符常量是非常基础且常用的数据类型。
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE了。又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。不过这仅仅是对字符串变量而言,如果是字符串字面量(string literals),如“abc"、"1a2b"之类写在代码中的字符串literals,那么允许的最大长度取决于字符串在常量池中的存储大小,也就是字符串在class格式文件中的存储格式: CONSTANT_Utf8_info { u1 tag; u2 length; u1 bytes[length]; } u2是无符号的16位整数,因此理论上允许的string literal的最大长度是2^16-1=65535。然而实际测试表明,允许的最大长度仅为65534,超过就编译错误了.
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
从源码看出,String底层使用一个字符数组来维护的。成员变量可以知道String类的值是final类型的,不能被改变的,所以只要一个值改变就会生成一个新的String类型对象,存储String数据也不一定从数组的第0个元素开始的,而是从offset所指的元素开始。