内容来自中软国际java培训班。
一、String、StringBuffer和StringBuilder类
字符串的创建、修改和操作是通过该3个类来完成的。
java中没有内置的字符串类型,是标准java库中包含一个String类。
定义一个字符串:通过字符串常量定义一个字符串。
String str = "Hello World!"
System.out.println("字符串的值为:" + str);
字符串常见类型
charAt():按照指定下标,返回字符串中的一个字符
char c = str.charAt(8);
System.out.println("字符串:" +str + ",的下标为8的字符为:" +c);
//字符串:Hello World!,的下标为8的字符为:r
length():返回字符串的长度(字符个数)
System.out.println("字符串:" +str + ",的字符个数为:" +str.length());
//字符串:Hello World!,的字符个数为:12
结合charAt()和length(),我们可以遍历一个字符串的每个字符(当数组用)
for(int i = 0; i<str.length();i++){
System.out.println("当前字符为:" + str.charAt(i));
}
//当前字符为:H
//当前字符为:e
//当前字符为:l
//当前字符为:l
//当前字符为:o
//当前字符为:
//当前字符为:W
//当前字符为:o
//当前字符为:r
//当前字符为:l
//当前字符为:d
//当前字符为:!
compareTo():让当前字符串,和目标字符串进行比较。返回int型的数值:
返回小于0的负数:当前字符串比目标字符串小
返回0:当前字符串内容等于目标字符串
返回大于0的正数:当前字符串比目标字符串大
当前字符一旦不一样,就返回,所以这个例子只比较了A和H,当前字符串是括号里的
完全相等:字符长度一样,里面字符也完全一样
System.out.println("Hello World!和Aello World!的比较结果为:" + str.compareTo("Aello World!"));
//Hello World!和Aello World!的比较结果为:7
concat():当前字符串拼接目标字符串,返回拼接后的新字符串
String str1 = str.concat("你好,世界!");
System.out.println("拼接后的字符串:str1 = " +str1);
System.out.println("老字符串:str = " +str);
//拼接后的字符串:str1 = Hello World!你好,世界!
//老字符串:str = Hello World!//不会改变老字符串
startsWith():判断字符串,是否以指定字符串开头:
System.out.println(str + "是否以“Hello”开头?" + str.startsWith("Hello"));
//Hello World!是否以“Hello”开头?true
endsWith():判断字符串,是否以指定字符串结尾:
System.out.println(str + "是否以”World“结尾?" + str.endsWith("World"));
//Hello World!是否以”World“结尾?false
equals():准确比较两个字符串是否相等(内容相等)
System.out.println(str + "是否与:“hello World!”相等:" + str.equals("Hello WOrld!"));
//Hello World!是否与:“hello World!”相等:false
equalsIgnoreCase():忽略大小写,比较两个字符串是否相等(内容相等)
System.out.println(str + "是否与:“hello World!”相等:" + str.equalsIgnoreCase("Hello WOrld!"));
//Hello World!是否与:“hello World!”相等:true
toUpperCase():转大写字母
String x = "Hello WORLD!";
System.out.println(x+"转大写字母为:" +x.toUpperCase());
//Hello WORLD!转大写字母为:HELLO WORLD!
toLowerCase():转小写字母
System.out.println(x+"转小写字母为:" +x.toLowerCase());
//Hello WORLD!转大写字母为:hello world!
contains():当前字符串,是否包含目标字符串
System.out.println(str + "是否包含:“llo”:" + str.contains("llo"));
//Hello World!是否包含:“llo”:true
indexOf():当前字符串中,查找目标字符串第一次出现的位置(下标)
System.out.println(str + "中,字母“W”第一次出现的位置为:" + str.indexOf('W'));
System.out.println(str + "中,字母“llo”第一次出现的位置为:" + str.indexOf("llo"));
//Hello World!中,字母“W”第一次出现的位置为:6
//Hello World!中,字母“llo”第一次出现的位置为:2
判断一个字符串是否为“空”
String str2 = null;//空引用,没有对象【压根没碗】
if(str2 == null){
System.out.println("str2是空字符串。");
}
str2 = " ";//有对象,但没内容【碗里没东西】
if(str2.isEmpty()){
System.out.println("str2是空字符串。");
}
//str2是空字符串。
replace():给当前字符串,替换指定查找字符串为目标字符串(返回新字符串,老字符串不变)
str2 = str.replace("llo","ABCDEFG");
System.out.println("替换前:str2 = " + str);
System.out.println("替换后:str2 = " + str2);
//替换前:str2 = Hello World!
//替换后:str2 = HeABCDEFG World!
split():把一个字符串,按照标记分割为多个子字符串,形成的数组
str2 = "aaa-bbb-ccc-123-xyz";
String[] strs = str2.split("-");
System.out.println(str2 + "按照“-”分割为:" + strs.length + "个字符串:");
for (int i = 0 ;i<strs.length ;i++){
System.out.println(strs[i]);
}
//aaa-bbb-ccc-123-xyz按照“-”分割为:5个字符串:
//aaa
//bbb
//ccc
//123
//xyz
toCharArray():把当前字符串,转换所有字符形成的char型数组
char[] chars = str.toCharArray();
for (int i =0; i< chars.length;i++){
System.out.println(chars[i]);
}
trim():用于去除字符串两端的空白字符,返回的是新字符串
str2 = " 你好,世界! \t\n".trim();
System.out.println("去除两端空格后,str2 =“" +str2 +"”");
//去除两端空格后,str2 =“你好,世界!”
substring():按照指定位置和结束位置,分割字符串(返回新字符串)
a.指定开始位置(含),到结尾整个截取一段子字符串
str2 = str.substring(3);
System.out.println("截取3位以后的字符串,str2=" + str2);
//截取3位以后的字符串,str2=lo World!
b.指定开始位置(含)和结束位置(不含),分割子字符串(返回新字符串)
str2 = str.substring(3,8);
System.out.println(str+"截取从[3,8)之间的字符串,str2=" + str2);
//Hello World!截取从[3,8)之间的字符串,str2=lo Wo
toString():用于将对象的内容转换为字符串,对于String本身来讲,将自己返回
System.out.println("str.toString()为:" + str.toString());
str.toString()为:Hello World!
一般类、对象的toString()方法
object的默认toString:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//学生对象的信息为:chapter7.Student@1b6d3586