你真的了解java的字符串String么?

一、定义

String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。

字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。

String类包括用于检查序列的各个字符的方法,用于比较字符串,搜索字符串,提取子字符串以及创建将所有字符翻译为大写或小写的字符串的副本。

二、属性

static Comparator<String> CASE_INSENSITIVE_ORDER

一个比较器,按 compareToIgnoreCase订购 String对象。

三、构造方法

 
Constructor and Description
String()

初始化新创建的 String对象,使其表示空字符序列。

String(byte[] bytes)

通过使用平台的默认字符集解码指定的字节数组来构造新的 String

String(byte[] bytes, Charset charset)

构造一个新的String由指定用指定的字节的数组解码charset

String(byte[] ascii, int hibyte)已弃用

此方法无法将字节正确转换为字符。 从JDK 1.1开始,首选的方法是通过String构造函数获取Charset ,字符集名称,或者使用平台的默认字符集。

String(byte[] bytes, int offset, int length)

通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String

String(byte[] bytes, int offset, int length, Charset charset)

构造一个新的String通过使用指定的指定字节子阵列解码charset

String(byte[] ascii, int hibyte, int offset, int count)已弃用

此方法无法将字节正确转换为字符。 从JDK 1.1开始,首选的方式是通过String构造函数获取Charset ,字符集名称,或使用平台的默认字符集。

String(byte[] bytes, int offset, int length, String charsetName)

构造一个新的 String通过使用指定的字符集解码指定的字节子阵列。

String(byte[] bytes, String charsetName)

构造一个新的String由指定用指定的字节的数组解码charset

String(char[] value)

分配一个新的 String ,以便它表示当前包含在字符数组参数中的字符序列。

String(char[] value, int offset, int count)

分配一个新的 String ,其中包含字符数组参数的子阵列中的字符。

String(int[] codePoints, int offset, int count)

分配一个新的 String ,其中包含 Unicode code point数组参数的子阵列中的 字符

String(String original)

初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。

String(StringBuffer buffer)

分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。

String(StringBuilder builder)

分配一个新的字符串,其中包含当前包含在字符串构建器参数中的字符序列。

四、方法

char charAt(int index)

返回 char指定索引处的值。

int codePointAt(int index)

返回指定索引处的字符(Unicode代码点)。

int codePointBefore(int index)

返回指定索引之前的字符(Unicode代码点)。

int codePointCount(int beginIndex, int endIndex)

返回此 String指定文本范围内的Unicode代码点数。

int compareTo(String anotherString)

按字典顺序比较两个字符串。

int compareToIgnoreCase(String str)

按字典顺序比较两个字符串,忽略病例差异。

String concat(String str)

将指定的字符串连接到该字符串的末尾。

boolean contains(CharSequence s)

当且仅当此字符串包含指定的char值序列时才返回true。

boolean contentEquals(CharSequence cs)

将此字符串与指定的CharSequence进行 CharSequence

boolean contentEquals(StringBuffer sb)

将此字符串与指定的StringBuffer进行 StringBuffer

static String copyValueOf(char[] data)

相当于 valueOf(char[])

static String copyValueOf(char[] data, int offset, int count)

相当于 valueOf(char[], int, int)

boolean endsWith(String suffix)

测试此字符串是否以指定的后缀结尾。

boolean equals(Object anObject)

将此字符串与指定对象进行比较。

boolean equalsIgnoreCase(String anotherString)

将此 String与其他 String比较,忽略案例注意事项。

static String format(Locale l, String format, Object... args)

使用指定的区域设置,格式字符串和参数返回格式化的字符串。

static String format(String format, Object... args)

使用指定的格式字符串和参数返回格式化的字符串。

byte[] getBytes()

使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。

byte[] getBytes(Charset charset)

使用给定的charset将该String编码为字节序列,将结果存储到新的字节数组中。

void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)已弃用

此方法无法将字符正确转换为字节。 从JDK 1.1开始,首选的方法是通过getBytes()方法,该方法使用平台的默认字符集。

byte[] getBytes(String charsetName)

使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

将此字符串中的字符复制到目标字符数组中。

int hashCode()

返回此字符串的哈希码。

int indexOf(int ch)

返回指定字符第一次出现的字符串内的索引。

int indexOf(int ch, int fromIndex)

返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。

int indexOf(String str)

返回指定子字符串第一次出现的字符串内的索引。

int indexOf(String str, int fromIndex)

返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。

String intern()

返回字符串对象的规范表示。

boolean isEmpty()

返回 true如果,且仅当 length()0

static String join(CharSequence delimiter, CharSequence... elements)

返回一个新的字符串,由 CharSequence elements的副本组成,并附有指定的delimiter的 delimiter

static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)

返回一个新 String的副本组成 CharSequence elements与指定的副本一起加入 delimiter

int lastIndexOf(int ch)

返回指定字符的最后一次出现的字符串中的索引。

int lastIndexOf(int ch, int fromIndex)

返回指定字符的最后一次出现的字符串中的索引,从指定的索引开始向后搜索。

int lastIndexOf(String str)

返回指定子字符串最后一次出现的字符串中的索引。

int lastIndexOf(String str, int fromIndex)

返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索。

int length()

返回此字符串的长度。

boolean matches(String regex)

告诉这个字符串是否匹配给定的 regular expression

int offsetByCodePoints(int index, int codePointOffset)

返回此 String内的指数,与 index codePointOffset代码点。

boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

测试两个字符串区域是否相等。

boolean regionMatches(int toffset, String other, int ooffset, int len)

测试两个字符串区域是否相等。

String replace(char oldChar, char newChar)

返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar

String replace(CharSequence target, CharSequence replacement)

将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。

String replaceAll(String regex, String replacement)

用给定的替换替换与给定的 regular expression匹配的此字符串的每个子字符串。

String replaceFirst(String regex, String replacement)

用给定的替换替换与给定的 regular expression匹配的此字符串的第一个子字符串。

String[] split(String regex)

将此字符串分割为给定的 regular expression的匹配。

String[] split(String regex, int limit)

将这个字符串拆分为给定的 regular expression的匹配。

boolean startsWith(String prefix)

测试此字符串是否以指定的前缀开头。

boolean startsWith(String prefix, int toffset)

测试在指定索引处开始的此字符串的子字符串是否以指定的前缀开头。

CharSequence subSequence(int beginIndex, int endIndex)

返回一个字符序列,该序列是该序列的子序列。

String substring(int beginIndex)

返回一个字符串,该字符串是此字符串的子字符串。

String substring(int beginIndex, int endIndex)

返回一个字符串,该字符串是此字符串的子字符串。

char[] toCharArray()

将此字符串转换为新的字符数组。

String toLowerCase()

将所有在此字符 String使用默认语言环境的规则,以小写。

String toLowerCase(Locale locale)

将所有在此字符 String ,以降低使用给定的规则情况下 Locale

String toString()

此对象(已经是字符串!)本身已被返回。

String toUpperCase()

将所有在此字符 String使用默认语言环境的规则大写。

String toUpperCase(Locale locale)

将所有在此字符 String使用给定的规则,大写 Locale

String trim()

返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。

static String valueOf(boolean b)

返回 boolean参数的字符串 boolean形式。

static String valueOf(char c)

返回 char参数的字符串 char形式。

static String valueOf(char[] data)

返回 char数组参数的字符串 char形式。

static String valueOf(char[] data, int offset, int count)

返回 char数组参数的特定子阵列的字符串 char形式。

static String valueOf(double d)

返回 double参数的字符串 double形式。

static String valueOf(float f)

返回 float参数的字符串 float形式。

static String valueOf(int i)

返回 int参数的字符串 int形式。

static String valueOf(long l)

返回 long参数的字符串 long形式。

static String valueOf(Object obj)

返回 Object参数的字符串 Object形式。

五、和StringBuffer、StringBuilder对比

1.String不可变长字符串,一旦定义,长度不可改变,而StringBuffer、StringBuilder可变长

2.StringBuilder是线程不安全的,而StringBuffer是线程安全的

3.不同的性能代表了试用场景的不同

    String:适用于少量的字符串操作的情况

    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

    作为一个java程序员,String是基础中的基础,熟练使用String,了解其结构特性,是必备的知识。

猜你喜欢

转载自blog.csdn.net/qq_31689009/article/details/102717031