一、String类的构造方法
由于String类的构造方法太多,我挑几个常用的构造方法在这进行讲解,有些构造方法只是数据类型不同,作用类似。如果某个方法我每讲到,你可以借助看源码进行理解。
1.String(String)
此构造方法的作用是将字符串数据封装成字符串对象。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
2.String(char[])
此构造方法的作用是将字符数组的数据封装成字符串对象。
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
3.String(char[], int, int)
此构造方法的作用是将字符数组中的一部分数据封装成字符串对象。
//offset表示开始下标,count表示封装char数组元素的数量
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;
}
}
// Note: offset or count might be near -1>>>1.
if (offset > value.length - count) {
throw new StringIndexOutOfBoundsException(offset + count);
}
this.value = Arrays.copyOfRange(value, offset, offset+count);
}
二、String的获取方法
1.length()
作用:获取字符串的长度。
String str = "Hello,java";
System.out.println(str.length());//10 标点符号也算一个字符
2.charAt(int index)
作用:获取指定索引处的字符。
String str = "Hello,java";
System.out.println(str.charAt(4));//o 下标从0开始,所以到4为o
3.indexOf(String str)
作用:获取str在字符串对象中第一次出现的索引。
String str = "Hello,java";
System.out.println(str.indexOf("l"));//2 第一个l的下标为2
4.indexOf(String str, int fromIndex)
作用:获取str在字符串对象中fromIndex开始往后第一次出现的索引。
String str = "Hello,javall";
System.out.println(str.indexOf("l",3));//3 下标3开始往后第一个l的下标就是3
5.lastIndexOf(String str)
作用:获取str在字符串对象中最后一次出现的索引。
String str = "Hello,javall";
System.out.println(str.lastIndexOf("l"));//11
6.lastIndexOf(String str, int fromIndex)
作用:获取str在字符串对象中fromIndex开始往前第一次出现的索引。
String str = "Hello,javall";
System.out.println(str.lastIndexOf("l",6));//3
7.substring(int start)
作用:从start开始截取字符串(含start下标的值)。
String str = "Hello,javall";
System.out.println(str.substring(4));//o,javall
8.substring(int start,int end)
作用:从start开始截取字符串到end结束(含start下标的值,但是不含end下标的值)。
String str = "Hello,javall";
System.out.println(str.substring(4,7));//o,j
三、String判断功能
1.equals(Object obj)
作用:比较字符串的内容是否相同。
String str = "adsfaxsdfas";
System.out.println(str.equals("adsfaxsdfas"));//true
System.out.println(str.equals("adsf"));//false
2.equalsIgnoreCase(String anotherString)
作用:比较字符串的内容是否相同,忽略大小写。
String str = "adsfaxsdfas";
System.out.println(str.equalsIgnoreCase("ADsfaxsdfAs"));//true
3.startsWith(String prefix)
作用:判断字符串对象是否以指定的字符开头(区分大小写)。
String str = "adsfaxsdfas";
System.out.println(str.startsWith("a"));//true
System.out.println(str.startsWith("A"));//false
4.startsWith(String prefix,int toffset)
作用:判断字符串对象是否以指定的字符开头,参数toffset为指定从哪个下标开始。
String str = "adsfaxsdfas";
System.out.println(str.startsWith("f", 3));//true
System.out.println(str.startsWith("f", 4));//false
5.endsWith(String str)
作用:判断字符串对象是否以指定的字符结尾。
String str = "adsfaxsdfas";
System.out.println(str.endsWith("s"));//true
6.isEmpty()
作用:判断指定字符串是否为空。
String str = "adsfaxsdfas";
System.out.println(str.isEmpty());//false
四、String类中的转化方法
1.toCharArray()
作用:把字符串转换为字符数组。
String str = "adsfaxsdfas";
char[] array = str.toCharArray();
System.out.println(Arrays.toString(array));//[a, d, s, f, a, x, s, d, f, a, s]
2.toLowerCase()
作用:把字符串转换为小写字符串。
String str = "ABCDEFG";
System.out.println(str.toLowerCase());//abcdefg
3.toUpperCase()
作用:把字符串转换为大写字符串。
String str = "abcdefg";
System.out.println(str.toUpperCase());//ABCDEFG
五、其他方法
1.trim()
作用:去除字符串两端空格。
String str = " adsf,axs,dfas ";
System.out.println(str);
System.out.println(str.trim());
结果:
2.split()
作用:去除字符串中指定的的字符,然后返回一个新的字符串,返回值要用数组接收。
String str = " adsf,axs,dfas ";
String[] strs = str.split(",");
System.out.println(Arrays.toString(strs));//[ adsf, axs, dfas ]
3.subSequence(int beginIndex,int endIndex )
作用:截取字符串中指定位置的字符组成一个新的字符串,不含endIndex下标的值。
String str = "adsfaxsdfas";
System.out.println(str.subSequence(1, 4));//dsf
4.replace(char oldChar, char newChar)
作用:将指定字符替换成另一个指定的字符。
String str = "adsfaxsdfas";
System.out.println(str.replace('a', 's'));//sdsfsxsdfss
5.replaceAll(String regex,String replasement)
作用:用新的内容替换全部旧内容。
String str = "Hello,world!";
System.out.println(str.replaceAll("ll", "LL"));//HeLLo,world!
6.replaceFirst(String regex,String replacement)
作用:替换首个满足条件的内容。
String str = "adsfaxsdfas";
System.out.println(str.replaceFirst("a", "s"));//sdsfaxsdfas
7.contains(CharSequence s)
作用:查看字符串中是含有指定字符。
String str = "adsfaxsdfas";
System.out.println(str.contains("a"));//true
8.concat(String str)
作用:在原有的字符串的基础上加上指定字符串。
String str = "adsfaxsdfas";
System.out.println(str.concat("加的内容"));//adsfaxsdfas加的内容
六、最后分享一个用startWith()方法解决查找字符串数组中的最长公共前缀问题
/**
* 编写一个函数来查找字符串数组中的最长公共前缀。
* 如果不存在公共前缀,返回空字符串""。
* 示例 1:
* 输入:strs = ["flower","flow","flight"]
* 输出:"fl"
*/
public class Code13 {
public static void main(String[] args) {
String[] strings = {"flower" , "flow" , "flight"};
System.out.println(longestCommonPrefix(strings));
}
/**
* 定义一个方法来求最长公共前缀
* @param strings
* @return
*/
public static String longestCommonPrefix(String[] strings){
//当数组为空时
if(strings.length == 0){
return "";
}
//先取数组的第一个字符串作为公共前缀
String s = strings[0];
//遍历数组
for (String string : strings){
while (!string.startsWith(s)){
//当该字符串不以s为前缀时
//判断该字符串是否为空
if(string.length() == 0){
return "";
}
//截取s的前s.length()-1个字符
s = s.substring(0,s.length()-1);
}
}
return s;
}
}
如果存在问题,欢迎一起在评论区交流!