1 String类的初始化
1.1 使用字符串常量直接初始化一个String对象
package String;
public class Main{
public static void main(String[] args) {
String str1 = null;
String str2 = "";
String str3 = "abc";
}
}
1.2 String构造方法初始化字符串对象
package String;
import javax.print.DocFlavor;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = new String(); // 创建一个内容为空的字符串
String str2 = new String("abc"); // 根据指定字符串内容创建对象
char[] charArry = new char[] {'a', 'b', 'c'};
String str3 = new String(charArry); // 根据指定字符数组创建对象
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str1+str2+str3); // 字符串连接
}
}
2 String类的常见操作
2.1 字符串的基本操作
package String;
public class Main {
public static void main(String[] args) {
String s = "abcabcbacdba";
System.out.println(s.length()); // 获取字符串长度
System.out.println(s.charAt(0)); // 返回index位置上的字符
System.out.println(s.indexOf('c')); // 返回此字符在字符串中第一次出现的位置
System.out.println(s.lastIndexOf('c')); // 返回此字符在字符串中最后一次出现的位置
System.out.println(s.indexOf("ab")); // 返回子字符串在字符串中第一次出现的位置
System.out.println(s.lastIndexOf("ab")); // 返回子字符串在字符串中最后一次出现的位置
}
}
2.2 字符串的转换操作
package String;
public class Main {
public static void main(String[] args) {
String str = "java";
String str1 = "PYTHON";
char[] charArry = str.toCharArray(); // 字符串转换为字符数组
for (int i = 0; i < charArry.length; i++) {
System.out.print(charArry[i]);
if (i != charArry.length-1) {
System.out.print(",");
}
}
System.out.println();
System.out.println(String.valueOf(12)); // int类型转换为String类型
System.out.println(str.toUpperCase()); // 变大写
System.out.println(str1.toLowerCase()); // 变小写
}
}
2.3 字符串的替换和去空格操作
package String;
public class Main {
public static void main(String[] args) {
String src = " http : //www.baidu.com ";
System.out.println(src.trim()); // 去掉两端空格
System.out.println(src.replace(" ", "")); // 将字符串中全部空格替换
}
}
2.4 字符串的判断操作
package String;
public class Main {
public static void main(String[] args) {
String S1 = "starter";
String s2 = "st";
System.out.println(S1.startsWith("st")); // 判断字符串是否以字符串st开头
System.out.println(S1.endsWith("er")); // 判断字符串吗是否以字符串er结尾
System.out.println(S1.contains("ar")); // 判断字符串是否包含字符串ar
System.out.println(S1.isEmpty()); // 判断字符串是否为空
System.out.println(S1.equals(s2)); // 判断两个字符串是否相等
}
}
package String;
public class Main {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2); // 判断两个字符串对象的地址是否相同
System.out.println(str1 == "abc");
System.out.println(str1.equals(str2)); // 判断两个字符串是否相等
}
}
2.5 字符串的截取和分割
package String;
public class Main {
public static void main(String[] args) {
String str = "2018-01-24";
System.out.println(str.substring(5)); // 从第六个字符截取到末尾
System.out.println(str.substring(5,7)); // 从第六个截取到第七个
String[] strArry = str.split("-"); // 通过“-”分割字符串为字符串数组
for (int i = 0; i < strArry.length; i++) {
System.out.print(strArry[i]);
if (i != strArry.length-1) {
System.out.print(",");
}
}
}
}
注: 访问字符时,索引不存在发生IndexOutOfBoundsException异常
3 StringBuffer类
String类是final类,String定义的字符是一个常量,因此他一旦创建,其内容和长度是不可变的。若对一个字符串进行修改只能创建新的字符串。
StringBuffer类和String类的最大区别在于它的内容和长度是可以改变的。StringBuffer类似一个字符容器,操作的都是这个容器,因此不会产生新的对象。
package String;
import javax.sound.midi.Soundbank;
public class Main {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("abc"); // 末尾追加字符
System.out.println(sb);
sb.insert(2, "de"); // 指定位置插入字符串
System.out.println(sb);
sb.setCharAt(2, 'c'); // 修改指定位置字符
System.out.println(sb);
sb.replace(2,5,"xyz"); // 替换指定位置字符串或字符
System.out.println(sb);
sb.reverse(); // 翻转字符串
System.out.println(sb);
sb.delete(0, 3); // 指定范围删除
System.out.println(sb);
sb.deleteCharAt(0); // 指定位置删除
System.out.println(sb);
sb.delete(0, sb.length()); // 清空缓冲区
System.out.println(sb);
}
}
注:
1.String类重写了Object累的equal方法,而StringBuffer类没有重写Object类的equals方法。(Object类的equals方法是判断是否为同一对象,与“==”相同)
2.String类对象可以用"+"进行连接,而StringBuffer类的对象则不能。