根据JAVA的提供的一些信息来看一下String这个特殊的对象:
java.lang public final class String
extends Object
implements java.io.Serializable, Comparable<String>, CharSequence
首先String 是属于java.lang包下面的资源,它是继承了Object这个基类,并且根据它的定义能得知它是一个不可变的(final)的class
(这里的不可变需要再往下深挖一下,我后面再补充)
这个string对象实现了io中的Serializable序列化接口,实现了Comparable接口,也实现了CharSequence(字符序列)接口
再继续往下阅读JAVA的代码:
The {@code String} class represents character strings.
首先String这个类是表示的字符串
string literals in Java programs, such as {@code "abc"}, are implemented as instances of this class
例如一个"abc"就可以表示Java程序中String这个字符串中的一个具体实例对象
Strings are constant; their values cannot be changed after they are created.
String字符串是恒定的,当一个字符串被实例化之后,它的值就是不可变的了
String buffers support mutable strings.
string buffer(字符缓冲区)是支持可变字符串的
Because String objects are immutable they can be shared.For example:
因为String字符串是不可变的,所以他们可以被分享,举例子如下:
* <blockquote><pre>
* String str = "abc";
* </pre></blockquote><p>
* is equivalent to:
* <blockquote><pre>
* char data[] = {'a', 'b', 'c'};
* String str = new String(data);
* </pre></blockquote><p>
上面的这个 字符串str和下面的这个char数组元素组成的字符串可以说是相等的,因为两者本质是一样的.
<blockquote><pre>
* System.out.println("abc");
* String cde = "cde";
* System.out.println("abc" + cde);
* String c = "abc".substring(2,3);
* String d = cde.substring(1, 2);
* </pre></blockquote>
上面的这几个小Demo都是说明了一点:字符串创建之后因为它的"不可变性",所以可以这样截取subString方式后直接相等
The class {@code String} includes methods for examining individual characters of the sequence,
String这个类当中包含了一些可以用来检测字符序列的方法(字符头\字符尾first index of \last index of)
for comparing strings, for searching strings, for extracting substrings, and for creating a copy of a string with all characters translated to uppercase or to lowercase.
上面的除了可以检测字符序列的方法,还包含了查询是否包含了另一个string对象(相当于子字符串),也可以把字符串更改为全为大写的,或者全为小写的(这个应用常应用在项目当中的用户登录界面的密码验证:为了防止用户的计算机差异,统一把用户传过来的登录信息转化为统一的一种类型)
Case mapping is based on the Unicode Standard version specified by the {@link java.lang.Character Character} class.
mapper的映射原理也是基于Unicode编码标准下class类是核定不变的这一先决条件进行的,设想一个场景,如果map中的key值不能够保证它的核定性,那么key值将会不断变化,这就会有很大麻烦,例如存储的key都是转化成String类型的进行保存,就是为了保证底层的稳定不可变.
The Java language provides special support for the string concatenation operator ( + )
Java语言中为String类型提供了特殊的连接符号的支持"+"这个特殊的对象可以在java中专门做连接符拼接对象
and for conversion of other objects to strings
Java中的一些其他对象也可以转化成为String类型例如常用的arrays.tostring的用法其实就是把array转化为string
String concatenation is implemented through the {@code StringBuilder}(or {@code StringBuffer} class and its {@code append} method.
StringBuilder和String buffer有高效拼接的作用效果,这个后面也可以进行详细的解读.