String常用方法

类 String:java.lang.Object--java.lang.String

String str = "abc"
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);


charAt
public char charAt(int index)

返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值在索引 0 处,第二个在索引 1 处,依此类推,这类似于数组索引。

参数:index - char 值的索引值。

返回:此字符串指定索引处的 char 值。第一个 char 值在索引 0 处。

抛出:IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。

例子:
   String s = "Welcome to Java!";
   char a;
   StringBuffer b = new StringBuffer();
   for (int i = 0; i < s.length(); i++) {
    a = s.charAt(i);
    b.append(a);
   }
    System.out.println(b);
其中关键的是如果把得到的字符放到字符串中,要用StringBuffer的append(char)方法,要不然就要直接打印出来
   String s = "Welcome to Java!";
   char a;
   for (int i = 0; i < s.length(); i++) {
    a = s.charAt(i);
    System.out.print(a);
   }

 

 

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

将字符从此字符串复制到目标字符数组。 要复制的第一个字符在索引 srcBegin 处;要复制的最后一个字符在索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin)。要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引: dstbegin + (srcEnd-srcBegin) - 1

参数:
srcBegin - 字符串中要复制的第一个字符的索引。
srcEnd - 字符串中要复制的最后一个字符之后的索引。
dst - 目标数组。
dstBegin - 目标数组中的起始偏移量。

抛出:
IndexOutOfBoundsException - 如果下列任何一项为 true:
srcBegin 为负。
srcBegin 大于 srcEnd
srcEnd 大于此字符串的长度
dstBegin 为负
dstBegin+(srcEnd-srcBegin) 大于 dst.length

例子:其中关键的是定义字符串数组的时候要创建它的数组空间,如下例的char[20],不然就会抛出异常
   String s = "Welcome to Java!";
   char []a = new char[20];
   s.getChars(0, s.length(), a, 0);
   System.out.println(a);

 

toCharArray
public char[] toCharArray()
将此字符串转换为一个新的字符数组。

返回:一个新分配的字符数组,它的长度是此字符串的长度,而且内容被初始化为包含此字符串表示的字符序列。

例子:此方法与getChars()不同的是直接返回的就是字符数组,不需要为字符数组指定空间
   String s = "Welcome to Java!";
   char []a = s.toCharArray();
   System.out.println(a);

 


getBytes
public byte[] getBytes()

使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
当此字符串不能在默认的字符集中解码时,该方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetEncoder 类。

返回:结果字节数组

例子:此程序就是把字符变成字节序列,然后再把字节序列变成字符
   String s = "Welcome to Java!";
   byte[]a =new byte[20];
   a=s.getBytes();
   System.out.print(a);
   String b =new String(a);
   System.out.println(b);

 

 

equals
public boolean equals(Object anObject)

比较此字符串与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的字符序列的 String 对象时,结果才为 true。

覆盖:类 Object 中的 equals

参数:anObject - 与此 String 进行比较的对象。

返回:如果 String 相等,则返回 true;否则返回 false

例子:
   String a = "Welcome to Java!";
   String b = "Welcome to Java!";
   boolean c = a.equals(b);
   System.out.print(c);


compareTo
public int compareTo(String anotherString)

按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。
如果按字典顺序,此 String 对象在参数字符串之前,则比较结果为一个负整数。
如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。

如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。

例子:当然结果为0
   String a = "Welcome";
   String b = "Welcome";
   int c = a.compareTo(b);
   System.out.print(c);

如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:

this.charAt(k)-anotherString.charAt(k)

例子:其中在相同的索引位置上,e跟E的char值相差32,所以结果为32
      如果是int c = b.compareTo(a)的话,结果为-32。下面例子一样
   String a = "Welcome";
   String b = "WelcomE";
   int c = a.compareTo(b);
   System.out.print(c);
如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:
this.length()-anotherString.length()

例子:其结果为7-2=5
   String a = "Welcome";
   String b = "We";
   int c = a.compareTo(b);
   System.out.print(c);

总结:当它们在的索引位置对应的字符相同的时候才会用到length,如果它们的索引位置对应的字符不同的时候,就会在不同的那个索引位置用上charAt。例如:
   String a = "Welcome to";
   String b = "Wel to";
   int c = a.compareTo(b);
   System.out.print(c);
因为在第四个索引位置上它们的字符已经不同了,所以会用到charAt,结果是空格与字符c的char值相差67,结果就是67

 

参数:anotherString - 要比较的 String。

返回:如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

 


contentEquals
public boolean contentEquals(StringBuffer sb)

当且仅当此 String 表示与指定的 StringBuffer 相同的字符序列时,才返回 true。

参数:sb - 要比较的 StringBuffer。

返回:当且仅当此 String 表示与指定的 StringBuffer 相同的字符序列时,才返回 true;否则返回 false。

抛出: NullPointerException - 如果 sb 为 null

例子:这个方法与equals()方法不同的是比较的类型不同
   String a = "Welcome to Java";
   StringBuffer b = new StringBuffer("welcome to Java");
   boolean c = a.contentEquals(b);
   System.out.print(c);

 


equalsIgnoreCase
public boolean equalsIgnoreCase(String anotherString)

将此 String 与另一个 String 进行比较,不考虑大小写。如果两个字符串的长度相等,并且两个字符串中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。
在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1 和 c2 这两个字符相同。

这两个字符相同(使用 == 运算符进行比较)。
对每个字符应用方法 Character.toUpperCase(char) 产生相同的结果。
对每个字符应用方法 Character.toLowerCase(char) 产生相同的结果。

参数:anotherString - 与此 String 进行比较的 String。

返回:如果参数不为 null,且这两个 String 在忽略大小写时相等,则返回 true;否则返回 false。

这个方法唯一与equals()方法不同的就是忽略大小写

 


compareToIgnoreCase
public int compareToIgnoreCase(String str)
此方法唯一跟compateToIgnoreCase()方法不同的就是忽略大小写

 

 

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

测试两个字符串区域是否相等。
将此 String 对象的子字符串与参数 other 的子字符串进行比较。如果这两个子字符串表示的是相同的字符序列,则结果为 true,【当且仅当 ignoreCase 为 true 时忽略大小写。当然这个参数是可要可不要的,当不要的时候默认是要比较大小写的】要比较的 String 对象的子字符串从索引 toffset 处开始,长度为 len。要比较的 other 的子字符串从索引 ooffset 处开始,长度为 len。

参数:
ignoreCase - 如果为 true,则比较字符时忽略大小写。
toffset - 字符串中的子区域的起始偏移量。
other - 字符串参数。
toffset - 字符串参数中的子区域的起始偏移量。
len - 要比较的字符数。

返回:如果此字符串的指定子区域匹配字符串参数的指定子区域,则返回 true;否则返回 false。是否完全匹配或大小写敏感取决于 ignoreCase 参数。

例子:这个程序的结果是false,因为2代表就是起始偏移量从l开始之后的8个字符lcome to,在子字符中从起始偏移量3,即l开始,之后的8个字符是lcome ti,在最后的一个字符不相同,所以结果为false
   String a = "Welcome to";
   String b = "We lcome ti";
   boolean c = a.regionMatches(2, b, 3, 8);
   System.out.print(c);

 

startsWith
public boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。

参数:prefix - 前缀。

返回:如果该参数表示的字符序列是此字符串表示的字符序列的前缀,则为 true;否则为 false。还要注意,如果参数是空字符串,或者等于由 equals(Object) 方法确定的 String 对象,则返回 true。

例子:因为前缀用空字符串表示,所以结果为true,如果是Wel也为true,但如果是Wec则为false
   String a = "Welcome to";
   boolean c = a.startsWith("");
   System.out.print(c);


endsWith
public boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。

参数:suffix - 后缀。

返回:如果该参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果该参数是空字符串或等于由 equals(Object) 方法确定的 String 对象,则结果为 true。例子跟startsWith差不多

 


hashCode
public int hashCode()

返回此字符串的哈希码。String 对象的哈希码按下列公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]    【使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希码为 0。) 】

覆盖:类 Object 中的 hashCode

返回:此对象的哈希码值。

例子:结果为哈希码计算公式。。。。-2079982760
   String a = "Welcome to Java!";
   int c = a.hashCode();
   System.out.print(c);

 

indexOf
public int indexOf(int ch/String str)
返回指定字符/子字符串在此字符串中第一次出现处的索引。

参数:ch - 一个字符(Unicode 代码点)
      str - 一个子字符串

返回:在该对象表示的字符序列中第一次出现该字符/子字符串的索引,如果未出现该字符/子字符串,则返回 -1。

例子:结果为8
   String a = "Welcome 45to Java";
   int c = a.indexOf("45");
   System.out.print(c);

 

indexOf
public int indexOf(int ch/String str,int fromIndex)

从指定的索引开始搜索,返回在此字符串中第一次出现指定字符/子字符串处的索引。
在此 String 对象表示的字符序列中,如果带有值 ch 的字符/带有str子字符串的索引不小于 fromIndex,则返回第一次出现该值的索引。在任何情况下,如果此字符串中没有这样的字符/字符串在位置 fromIndex 处或其后出现,则返回 -1。 所有索引都在 char 值中指定(Unicode 代码单元)。


参数:ch - 一个字符(Unicode 代码点)。
      str - 一个子字符串。
      fromIndex - 开始搜索的索引。 fromIndex 的值没有限制。如果它为负,它和 0 具有同样的效      果:将搜索整个字符串。如果它大于此字符串的长度,则它具有等于此字符串长度的相同效果:      返回 -1。

返回:在此对象表示的字符序列中第一次出现的大于或等于 fromIndex 的字符/子字符串的索引,如果未出现该字符/子字符串,则返回 -1。

例子:结果为8,其中字符是从第8个开始搜索与之相同的字符
   String a = "Welcome 45to Java";
   int c = a.indexOf("45",8);
   System.out.print(c);


lastIndexOf
public int lastIndexOf(int ch/String str)
返回最后一次出现的指定字符/子字符串在此字符串中的索引。

参数:ch - 一个字符(Unicode 代码点)
      str - 一个子字符串

返回:在此对象表示的字符序列中最后一次出现该字符/子字符串的索引,如果未出现该字符,则返回 -1。


lastIndexOf
public int lastIndexOf(int ch/String str,int fromIndex)
从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符/子字符创在此字符串中的索引。

参数:ch - 一个字符(Unicode 代码点)。
      str - 一个子字符串。
      fromIndex - 开始搜索的索引。 fromIndex 的值没有限制。如果它为负,它和 0 具有同样的效        果:将搜索整个字符串。如果它大于此字符串的长度,则它具有等于此字符串长度的相同效果:        返回 -1。

返回:在此对象表示的字符序列中最后一次出现的等于 fromIndex 索引的字符/子字符串,如果在该点之前未出现该字符/子字符串,则返回 -1。
例子不再重复

 


substring
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。

例如:
"unhappy".substring(2) returns "happy"
"Harbison".substring(3) returns "bison"
"emptiness".substring(9) returns "" 【an empty string】

参数:beginIndex - 开始处的索引(包括)。

返回:指定的子字符串。

抛出: IndexOutOfBoundsException - 如果 beginIndex 为负或大于此 String 对象的长度

 


substring
public String substring(int beginIndex,int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。

例如:
"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"

参数:beginIndex - 开始处的索引(包括)。
      endIndex - 结束处的索引(不包括)。索引的第一个位置是0

返回:指定的子字符串。

抛出: IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。

 


concat
public String concat(String str)
将指定字符串联到此字符串的结尾。如果参数字符串的长度为 0,则返回此 String 对象。否则,创建一个新的 String 对象,用来表示由此 String 对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序列。

例如:
"cares".concat("s") returns "caress"
"to".concat("get").concat("her") returns "together"

参数:str - 串联到此 String 结尾的 String。

返回:一个字符串,它表示此对象的字符后面串联字符串参数的字符。

 


replace
public String replace(char oldChar,char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。
如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。

例如:
"mesquite in your cellar".replace('e', 'o')
         returns "mosquito in your collar"
"the war of baronets".replace('r', 'y')
         returns "the way of bayonets"
"sparring with a purple porpoise".replace('p', 't')
         returns "starring with a turtle tortoise"
"JonL".replace('q', 'x') returns "JonL" 【no change】

参数:oldChar - 原来的字符。
      newChar - 新字符。

返回:一个从此字符串派生的字符串,方法是在每个出现 oldChar 的地方用 newChar 替换。

 

 


replace
public String replace(CharSequence target,CharSequence replacement)
使用指定的字面值替换序列替换此字符串匹配字面值目标序列的每个子字符串。该替换从此字符串的开始一直到结束。

例如:用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。 下面例子的结果为Welcome 45toVC。
   String a = "Welcome 45to Java";
   System.out.print(a.replace("Java", "VC"));

参数:target - 要被替换的 char 值序列
      replacement - char 值的替换序列

返回:得到的字符串

抛出: NullPointerException - 如果 target 或 replacement 为 null。

 

 

toLowerCase
public String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。这等效于调用 toLowerCase(Locale.getDefault())。

返回:要转换为小写的 String。

toUpperCase
public String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。此方法等效于toUpperCase(Locale.getDefault())。

返回:要转换为大写的 String

 

 


trim
public String trim()
返回字符串的副本,忽略前导空白和尾部空白。
如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '/u0020'(空格字符),则返回对此 String 对象的引用。 若字符串中没有代码大于 '/u0020' 的字符,则创建并返回一个表示空字符串的新的 String 对象。
否则,假定 k 为代码大于 '/u0020' 的第一个字符的索引,m 为代码大于 '/u0020' 的最后一个字符的索引。创建一个新的 String 对象,它表示此字符串中从索引 k 处的字符开始,到索引 m 处的字符结束的子字符串,也就是 this.substring(k, m+1) 的结果。

此方法用于截去字符串从头到尾的空白(如上面所定义)。

返回:此字符串移除了前导和尾部空白的副本,如果没有前导和尾部空白,则返回此字符串。

例如:结果是【Welcome 45to Java】它只把前导和为不的空白去掉而已
   String a = "       Welcome 45to Java      ";
   System.out.print(a.trim());

 


toString
public String toString()
返回此对象本身(它已经是一个字符串!)。

覆盖:类 Object 中的 toString

返回:字符串本身。

 


valueOf
public static String valueOf(Object obj)
返回 Object 参数的字符串表示形式。

参数:obj - 一个 Object。

返回:如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值。

例子:结果为java.awt.Label[label0,0,0,0x0,invalid,align=left,text=Welcome to Java!]
因为此valueOf()这个方法是静态方法,所以在用String直接调用就可以了,即String.valueOf(Object)
   Label label = new Label("Welcome to Java!");
   System.out.println(String.valueOf(label));


valueOf
public static String valueOf(char[] data)
返回 char 数组参数的字符串表示形式。字符数组的内容已被复制,后续修改不会影响新创建的字符串

参数:data - char 数组。

返回:一个新分配的字符串,它表示包含在字符数组参数中的相同字符序列。

例子:
   char []a = {'w','e','l','c','o','m','e'};
   System.out.println(String.valueOf(a));

 


valueOf
public static String valueOf(char[] data,int offset,int count)
返回 char 数组参数的特定子数组的字符串表示形式。
offset 参数是子数组的第一个字符的索引。count 参数指定子数组的长度。字符数组的内容已被复制,后续修改不会影响新创建的字符串。

参数:
data - 字符数组。
offset - String 值的初始偏移量。
count - String 值的长度。

返回:一个字符串,它表示在字符数组参数的子数组中包含的字符序列。

抛出: IndexOutOfBoundsException - 如果 offset 为负,或者 count 为负,或者 offset+count 大于 data.length。

 


valueOf
public static String valueOf(boolean b/char c/int i/long l/float f/double d)
返回 boolean 参数的字符串表示形式。
返回 char 参数的字符串表示形式。
返回 int 参数的字符串表示形式。该表示形式恰好是单参数的 Integer.toString 方法返回的结果。
返回 long 参数的字符串表示形式。该表示形式恰好是单参数的 Long.toString 方法返回的结果。
返回 float 参数的字符串表示形式。该表示形式恰好是单参数的 Float.toString 方法返回的结果。
返回 double 参数的字符串表示形式。该表示形式恰好是单参数的 Double.toString 方法返回的结果。

参数:
b - 一个 boolean。
c - 一个 char。
i - 一个 int。
l - 一个 long。
f - 一个 float。
d - 一个 double

返回:
如果参数为 true,返回一个等于 "true" 的字符串;否则,返回一个等于 "false" 的字符串。
一个长度为 1 的字符串,它包含参数 c 的单个字符。
int 参数的字符串表示形式。
返回 long 参数的字符串表示形式。
float 参数的字符串表示形式。
double 参数的字符串表示形式。
总结:因为有关valueOf()的所有方法都是static静态方法,所以在调用这种方法的时候要用String直接调用,而不是实例对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值