jdk1.8中⽂注释版源码下载(附实例)资源好不好⾃⼰看
package java.lang;
import java.io.ObjectStreamField;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Formatter;
import java.util.Locale;
import java.util.Objects;
import java.util.StringJoiner;
import Matcher;
import Pattern;
import PatternSyntaxException;
/**
*{@code String}类表⽰字符串。全部
*Java程序中的字符串⽂本,例如{@code“abc”},是
*作为此类的实例实现。
*<p>
*字符串是常量;它们的值在
*被创造出来。字符串缓冲区⽀持可变字符串。
*因为字符串对象是不可变的,所以可以共享它们。例如:
*<blockquote><pre>
*String str=“abc”;
*</pre></blockquote><p>
*相当于:
*<blockquote><pre>
*char data[]={'a','b','c'};
*String str=新字符串(数据);
*</pre></blockquote><p>
*下⾯是⼀些有关如何使⽤字符串的更多⽰例:
*<blockquote><pre>
jfinal项目实例*    系统输出打印(“abc”);
*String cde=“cde”;
*    系统输出打印(“abc”+cde);
*字符串c=“abc”。⼦字符串(2,3);
*字符串d=cde.⼦串(1,2);
*</pre></blockquote>
*<p>
*类{@code String}包含⽤于检查
*序列的单个字符,⽤于⽐较字符串,⽤于
*搜索字符串、提取⼦字符串和创建
*将所有字符转换为⼤写或
*⼩写。案例映射基于Unicode标准版本
*由{@链接指定java.lang.Character语⾔字符类。
*<p>
*Java语⾔为字符串提供了特殊的⽀持
*连接运算符(+),⽤于转换
*字符串的其他对象。实现了字符串连接
*通过{@code StringBuilder}(或{@code StringBuffer})
*类及其{@code append}⽅法。
*字符串转换通过⽅法实现
*{@code toString},由{@code Object}和
*由Java中的所有类继承。有关
*字符串连接和转换,请参见Gosling、Joy和Steele,
*<i>Java语⾔规范</i>。
*
*<p>除⾮另有说明,否则将<tt>null</tt>参数传递给构造函数
*或类中的⽅法将导致{@link NullPointerException}
*扔了。
*
*<p>A{@code String}表⽰UTF-16格式的字符串
*其中,<em>补充字符</em>由<em>替代项表⽰
*对</em>(请参见<a ref='字符.html#unicode“>Unicode码
*的{@code Character}类中的字符表⽰</a>
*更多信息)。
*索引值引⽤{@code char}代码单元,因此
*字符在{@code String}中使⽤两个位置。
*<p>类{@code String}提供处理
*Unicode代码点(即字符),以及
*处理Unicode代码单元(即{@code char}值)。
*
*@作者李博因顿
*@作者亚瑟·范霍夫
*@作者马丁·布赫霍尔茨
*@作者乌尔夫·齐⽐斯
*@看java.lang.ObjectétoString()
*@看java.lang.StringBuffer语⾔
*@看java.lang.StringBuilder语⾔
*@看java.nio.charset⽂件.字符集
*@JDK1.0之后
*/
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {    /** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -6849794470754667710L;
/**
*类字符串是序列化流协议中的特殊⼤⼩写。
*
*字符串实例根据
*<a href={@docRoot}/。/platform/serialization/spec/输出.html">
*对象序列化规范,第6.2节,“流元素”</a>
*/
private static final ObjectStreamField[] serialPersistentFields =
new ObjectStreamField[0];
/
**
*初始化新创建的{@code String}对象,使其表⽰
*⼀个空字符序列。注意,这个构造函数的⽤法是
*不需要,因为字符串是不可变的。
*/
public String() {
this.value = "".value;
}
/**
*初始化新创建的{@code String}对象,使其表⽰
*与参数相同的字符序列;换句话说
*新创建的字符串是参数字符串的副本。除⾮
*需要{@code original}的显式副本,使⽤此构造函数是
*不需要,因为字符串是不可变的。
*
*@param原件
*@param原件
*{@code字符串}
*/
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
/**
*分配⼀个新的{@code String},以便它表⽰
*字符数组参数中当前包含的字符。这个
*复制字符数组的内容;随后修改
*字符数组不影响新创建的字符串。
*
*@param值
*字符串的初始值
*/
public String(char value[]) {
this.value = pyOf(value, value.length);
}
/**
*分配新的{@code String},其中包含⼦数组中的字符
*字符数组参数的。{@code offset}参数是
*⼦数组的第⼀个字符的索引和{@code count}
*参数指定⼦数组的长度。的内容
*⼦数组被复制;字符数组的后续修改
*不影响新创建的字符串。
*
*@param值
*作为字符源的数组
*
*@param偏移量
*初始偏移量
*
*@param计数
*长度
*
*@抛出IndexOutboundsException
*如果{@code offset}和{@code count}参数索引
*{@code value}数组边界之外的字符
*/
public String(char value[], int offset, int count) {
if (offset < 0) {
throw new StringIndexOutOfBoundsException(offset);
}
if (count <= 0) {
if (count < 0) {
throw new StringIndexOutOfBoundsException(count);
}
if (offset <= value.length) {
this.value = "".value;
return;
}
}
//注意:偏移量或计数可能接近-1>>>1。
if (offset > value.length - count) {
throw new StringIndexOutOfBoundsException(offset + count);        }
this.value = pyOfRange(value, offset, offset+count);
}
/**
*分配新的{@code String},其中包含⼦数组中的字符
*的字符.html#unicode“>Unicode代码点</a>数组
*争论。{@code offset}参数是第⼀个代码的索引
*争论。{@code offset}参数是第⼀个代码的索引
*⼦数组的点和{@code count}参数指定
*⼦阵列的长度。⼦数组的内容转换为
*{@code char}s;对{@code int}数组的后续修改不会
*影响新创建的字符串。
*
*@param码位
*作为Unicode代码点源的数组
*
*@param偏移量
*初始偏移量
*
*@param计数
*长度
*
*@抛出IllegalArgumentException
*如果在{@code中发现任何⽆效的Unicode代码点
*码位}
*
*@抛出IndexOutboundsException
*如果{@code offset}和{@code count}参数索引
*{@code codePoints}数组边界之外的字符
*
*@从1.5开始
*/
public String(int[] codePoints, int offset, int count) {
if (offset < 0) {
throw new StringIndexOutOfBoundsException(offset);
}
if (count <= 0) {
if (count < 0) {
throw new StringIndexOutOfBoundsException(count);
}
if (offset <= codePoints.length) {
this.value = "".value;
return;
}
}
//注意:偏移量或计数可能接近-1>>>1。
if (offset > codePoints.length - count) {
throw new StringIndexOutOfBoundsException(offset + count);        }
final int end = offset + count;
//步骤1:计算char[]的精确⼤⼩
int n = count;
for (int i = offset; i < end; i++) {
int c = codePoints[i];
if (Character.isBmpCodePoint(c))
continue;
else if (Character.isValidCodePoint(c))
n++;
else throw new String(c));        }
//传递2:分配并填写char[]
final char[] v = new char[n];
for (int i = offset, j = 0; i < end; i++, j++) {
int c = codePoints[i];
if (Character.isBmpCodePoint(c))
v[j] = (char)c;
else
}
}
this.value = v;
}
/**
*分配从数组的⼦数组构造的新{@code String}
*8位整数值。
*
*<p>参数{@code offset}是
*⼦数组,{@code count}参数指定
*⼦阵。
*
*<p>⼦数组中的每个{@code byte}都转换为{@code char}作为
*在上述⽅法中指定。
*
*@已弃⽤此⽅法⽆法将字节正确转换为字符。
*从JDK 1.1开始,⾸选的⽅法是通过
*{@code String}接受{@link的构造函数
* java.nio.charset⽂件.Charset}、Charset名称或使⽤平台的
*默认字符集。
*
*@param ascii码
*要转换为字符的字节
*
*@param希⽐
*每个16位Unicode代码单元的前8位
*
*@param偏移量
*初始偏移量
*@param计数
*长度
*
*@抛出IndexOutboundsException
*如果{@code offset}或{@code count}参数⽆效
*
*@见字符串(byte[],int)
*@请参阅字符串(byte[],int,int,java.lang.String语⾔)
*@请参阅字符串(byte[],int,int,java.nio.charset⽂件.字符集)*@请参阅字符串(byte[],int,int)
*@见字符串(字节[],java.lang.String语⾔)
*@见字符串(字节[],java.nio.charset⽂件.字符集)
*@见字符串(字节[])
*/
@Deprecated
public String(byte ascii[], int hibyte, int offset, int count) {
checkBounds(ascii, offset, count);
char value[] = new char[count];
if (hibyte == 0) {
for (int i = count; i-- > 0;) {
value[i] = (char)(ascii[i + offset] & 0xff);
}
} else {
hibyte <<= 8;
for (int i = count; i-- > 0;) {
value[i] = (char)(hibyte | (ascii[i + offset] & 0xff));
}
}
this.value = value;
}
/**
*分配新的{@code String}包含从
*⼀个8位整数值数组。中的每个字符
*结果字符串由相应的组件构造

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。