String 类


 

1. String 是什么

  Java 中字符串是一个比较特殊的对象,可以使用 new,也可以不通过 new 来创建字符串对象。

  String s1 = new String("abc");     //在堆中

  String str = "abc";          //在常量池中(ps: 常量池为方法区的一部分,字符串在常量池中保存一份,若没有则创建)

 

  字符串是不可变量,一旦初始化就不可以被改变
  String s1 = "abc";
  s1 = s1 + "123";  //s1变量变了,并不是字符串变了

 

  使用构造方法创建的对象都是在堆中
  
  如果直接使用字符串常量创建对象:new String(String original),先在常量池中创建对象,然后在堆中创建对象;
  如果是其它构造方法创建的字符串,先在堆中创建出来,并在常量池保存一个副本(如果常量池中没有的话)


2. String 常用的构造方法

构造方法 说明
String(char[] ch) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
String(char[] ch,int offset,int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
String(byte[] bys,int off,int len) 使用默认的解码,将字节数组解码成String。
String(String original) 用一个原始字符串构建一个新字符串,相当于为字符串创建副本。

3. String 类常见方法

方法 说明
length() 返回此字符串的长度。
charAt(int index)  返回指定索引处的 char 值。
toCharArray()  将此字符串转换为一个新的字符数组。

indexOf(String str) 

返回指定子字符串在此字符串中第一次出现处的索引。
startsWith(String prefix)  测试此字符串是否以指定的前缀开始。
endsWith(String suffix) 测试此字符串是否以指定的后缀结束。

isEmpty()

判断是否为空,当且仅当 length() 为 0 时返回 true。
substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
trim()  返回字符串的副本,忽略前导空白和尾部空白。
matches(String regex) 告知此字符串是否匹配给定的正则表达式。
split(String regex) 根据给定正则表达式的匹配拆分此字符串。
replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
compareTo(String anotherString) 按字典顺序比较两个字符串。
contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true。
equals(Object anObject) 将此字符串与指定的对象比较。

 

 

 


 

4. == 和 equals()方法 的区别

   ==:        对于引用数据类型,比较的是地址值

  equals()方法:    先比较地址值,若地址值不同,再比较字符序列


5. 统计大小写字符个数

  【思路】

  通过 length()方法 获得字符串长度,循环,通过 charAt()方法 得到索引处的 char值,通过其与 ASCLL值 对比,通过计数进行统计。


6. 短串在长串中出现的次数

  例:
  String src = "10abc111ababb";
  求"ab"出现的次数

 

  思路:使用 while 循环结合 indexOf(String str) 方法


且将新火试新茶,诗酒趁年华。
原文地址:https://www.cnblogs.com/share23/p/9616107.html