目录
字符串详解:http://t.csdn.cn/3gCz3
欢迎各位在评论区提问或指出问题,请多多赐教 ——海鱼🐟
▮字符串的四种创建方法
public static void main(String[] args) { char[] chars = {'a',' ','f','i','s','h'}; String str1 = "a fish in the sea"; //不new对象,传字符串常量 String str2 = new String("a fish in the sea"); //new对象,传入字符串常量的char[]数组 String str3 = new String(chars); //new对象,给新对象传入chars数组 String str4 = new String(str1); //new对象,传入str1的char[]数组 System.out.println(str1 + "\n" + str2 + "\n" + str3 + "\n" + str4); }
第一种没有创建新对象,是把常量池对象的位置传给str1;二三四则是创建了一个新对象,传入参数的char数组。
•运行截图
▮public boolean isEmpty( ):判断字符串是否为空
public static void main(String[] args) { String str = "a fish in the sea"; boolean bp = str.isEmpty(); //不为空,则返回flase if(!bp){ System.out.println("字符串不为空"); } }
你可能会想,判断字符串是否为空直接用 “ str == "" ”就行。但要注意,str是String对象的引用,并不是是char[ ]数组的引用。我们无法从外界去访问char[ ],只能用String提供的公开方法 “ isEmpty( ) ”来判断。
为空时返回的是true,而不是false。
▪运行截图
▮public int indexOf(......):查找子串或字符
public static void main(String[] args) { String str = "a fish in the sea"; //从0开始,第一个i的下标 int index1 = str.indexOf('i'); //一个参数 (char ch) //从0开始,第一个"fish"的首字符下标 int index2 = str.indexOf("fish"); //一个参数 (String str) //从下标4开始,第一个i的下标 int index3 = str.indexOf('i',4); //两个参数 (char ch, int formaindex) System.out.println("第一个i的下标:" + index1); System.out.println("第一个fish的下标:" + index2); System.out.println("从下标formindex处开始,第一个i的下标:" + index3); }
indexOf(……)的返回值是一个int,表示下标。
•运行截图
▮public int length( ):获取字符串长度
public static void main(String[] args) { String str = "a fish in the sea"; int len = str.length(); System.out.println(str + ": len = "+len); }
▪运行截图
▮public char charAt(int index):获取字符串里的字符
public static void main(String[] args) { String str = "hello"; //按照下标来获取字符 System.out.println("str第5个字符:'" + str.charAt(4) + "'"); //一个参数(int index) }
只能获取String的字符,不能修改字符,因为String有不可变性。
•运行截图
▮public boolean equals(String str):比较字符串内容是否相同
public static void main(String[] args) { String str1 = new String("a fish in the sea"); String str2 = new String("a fish in the sea"); if(str1.equals(str2)) { //equals System.out.println("str1 == str2"); } if(str1 == str2){ //" == " System.out.println("str1 == str2"); } }
比较字符串内容相同不能直接使用“==”来判断,“==”比较的是两个对象指向的地址,而不是字符串的内容。因为字符串内容是private,被封装的,要比较只能通过内部的方法equals()来比较。
•运行截图
▮public int compareTo(String str):比较字符串的大小
public static void main(String[] args) { String str1 = new String("a fish in the sea"); String str2 = new String("a fish in the sea"); String str3 = new String("b fish in the sea"); if(str1.compareTo(str2) == 0) { //返回值:0:相同,小于0的数:小,大于0的数:大 System.out.println("str1 == str2"); } if(str1.compareTo(str3) < 0) { System.out.println("str1 < str3"); } }
compareTo()的返回值是 “ str1的字符 - str2的字符 ”,注意是字符相减。
•运行截图
▮public String[] split(String regex):分隔字符串
public static void main(String[] args) { String str = "a_fish_in_the_sea"; //根据字符串" "将str分割成 String[] strs,注意是字符串,不是字符 String[] strs1 = str.split("_"); //一个参数(String regex) //根据字符串" "将str分割成 String[3] strs,第二个参数是分割后的数组个数 String[] strs2 = str.split("_",3); //两个参数(String regex, int limit) //foreach打印字符串数组 for(String s:strs1){ System.out.print(s+" | "); } System.out.println(); for(String s:strs2){ System.out.print(s+" | "); } }
•运行截图
▮public String subString(……):取子字符串
public static void main(String[] args) { String str = "a fish in the sea"; String str1 = str.substring(7);// 一个参数 (int beginIndex) String str2 = str.substring(2,6);// 两个参数(int beginIndex, int endIndex) System.out.println(str1); System.out.println(str2); }
两个重载方法。第一个从begin参数开始,一直截取到末尾字符;第二个从begin参数开始,一直截取到end参数的前面一个字符,左闭右开。
•运行截图
▮public String replace(......):字符串替换
public static void main(String[] args) { String str = "a fish in the land"; //将字符串中的"land"替换成"sea" str = str.replace("land", "sea"); System.out.println(str); }
•运行截图
▮public String concat(String str):连接字符串
public static void main(String[] args) { String str = "a fish"; //将字符串" in the sea"连接到str的后面 str = str.concat(" in the sea"); System.out.println(str); }
•运行截图
▮public void getChars(......):转移字符串给char数组
public static void main(String[] args) { String str = "a fish in the land"; char[] animal = new char[10]; animal[0] = 'a'; //把str的[2,6)的字符传给 char[] animal,从下标2开始传入 str.getChars(2,6,animal,2); //四个参数,(int srcBegin, int srcEnd, char[] dst, int dstBegin) for(char ch:animal){ System.out.print(ch); } }
•运行截图
▮public String toLowerCase( ):大写转小写
public static void main(String[] args) { String str = "a fish in the land"; str = str.toUpperCase(); System.out.println(str); }
•运行截图
▮public String toUpperCase( ):小写转大写
public static void main(String[] args) { String str = "A FISH IN THE LAND"; str = str.toLowerCase(); System.out.println(str); }
•运行截图