文章目录[隐藏]
一、String 的三种构造方法
-
String s1="hello word"; System.out.println(s1);
这种方式是字符串字面值的形式创建
String
对象,也是最常用的方式之一。在Java中,字符串字面值会在编译时自动创建为String
对象。在内存中,会创建一个指向字符串常量池中的字符串的引用。 -
String s2 = new String("hello word"); System.out.println(s2);
使用
new
关键字显式调用String
类的构造方法创建对象。这种方式会在堆内存中创建一个新的字符串对象,而不是直接引用字符串常量池中的字符串。即使字符串常量池中已经存在相同内容的字符串,使用这种方式也会创建一个新的对象。 -
char[] c={'a','b','c'}; String s3 = new String(c); System.out.println(s3);
使用字符数组作为参数调用
String
类的构造方法。这种方式会根据字符数组中的字符创建一个新的字符串对象。新对象的内容是字符数组中的字符序列。
二、字符串查找和截取
String str1 = new String("abcdefcba");
- 查找指定字符或子字符串第一次出现的位置,从0开始算。
int a1 = str1.indexOf("a");//1 int a2 = str1.indexOf("f");//5
- 查找指定字符或子字符串最后一次出现的位置。
int a3 = str1.lastIndexOf("f");//5 int a4 = str1.lastIndexOf("c");//6
- 截取子字符串,指定起始和结束位置(不包括结束位置)
String a5 = str1.substring(2, 4);//cd
三、获取字符串的长度
int length = str1.length();//9
四、字符提取
获取指定索引位置的字符。
char b1 = str1.charAt(8);//a
五、字符串判断
- 判断字符串是否以指定前缀开头。
boolean def1 = str1.startsWith("abc");//true boolean def2 = str1.startsWith("bcd");//false
- 判断字符串是否以指定后缀结尾。
boolean def1 = str1.endsWith("cba");//true boolean def2 = str1.endsWith("bcd");//false
- 判断字符串是否为空,为空则true。
boolean def3 = str1.isEmpty();//false
- 判断字符串是否包含指定子字符串。
boolean contains1 = str1.contains("abc");//true boolean contains2 = str1.contains("zmkj");//false
六、字符串比较
String str2 = "hello";
- 判断两个字符串是否相等。
boolean isEqual = str2.equals(str2);
- 判断两个字符串是否相等(忽略大小写)。
boolean isEqualIgnoreCase = "A".equalsIgnoreCase("a");//true
- 比较两个字符串的大小关系 ,首先比较最左边的,如果有重复就下一个,哪个大就哪个。
int compareResult = "A".compareTo("B");//-1 //A的码值为65,B的码值为66,65-66=-1
注:比较大小是根据ASCLL码值比较大小,可以查看Ascll完整码表(256个)_ascll码表_加油当当的博客-CSDN博客查看ASCLL码值,也可以使用下面代码查询相关的ASCLL码值。
int x=(char)'A';
System.out.println(x);
七、字符串替换
将指定字符或子字符串替换为新的字符或字符串。
String replacedString = str1.replace("l", "L");
八、字符串分割
使用指定的分隔符将字符串分割成多个部分,返回字符串数组。
String[] parts = str1.split(" ");
九、StringBuilder
StringBuilder
类是Java中用于动态修改字符串的可变类。相比于String
类,StringBuilder
类的主要优势在于它提供了可修改和操作字符串的方法,而不会频繁创建新的字符串对象,从而提高了性能。
StringBuilder
类是非线程安全的,如果在多线程环境下使用,建议使用线程安全的StringBuffer
类。
创建StringBuilder
对象:
- 创建一个空的StringBuilder对象。
StringBuilder sb = new StringBuilder();
- 创建一个包含初始内容的StringBuilder对象。
StringBuilder sb1 = new StringBuilder("Hello");
追加字符串:
在StringBuilder对象末尾追加字符串
sb.append(" World");
插入字符串:
在指定位置插入字符串
sb.insert(5, " Java");
删除字符串:
删除指定范围内的字符串
sb.delete(5, 10);
替换字符串:
用指定字符串替换指定范围内的字符串
sb.replace(0, 5, "Hi");
反转字符串:
反转StringBuilder对象中的字符序列
sb.reverse();
获取字符串长度:
获取StringBuilder对象中的字符序列长度
int length = sb.length();
转换为字符串:
将StringBuilder对象转换为不可变的String对象
String str = sb.toString();
链式操作:
StringBuilder
的方法可以通过链式调用,实现多个操作的连续执行,例如:
sb.append(" Hello").insert(5, "World").delete(0, 5);