String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基本数据类型一样使用,声明与初始化等操作都是相同的,是程序经常处理的对象,所以学好String的用法很重要。
一、创建字符串
在Java中用String类的构造方法来创建字符串变量,常用构造方法如下:String s = new String();
2. 使用String(char a[])方法创建String对象。
char a[] = {'h','e','l','l','o'}; String s = new String(a);
也可以写成String s = new String("hello");
3. 使用String(char a[], int offset, int length)方法创建对象。
char a[] = {'s','t','u','d','e','n','t'}; String s = new String(a, 2, 4);
也可以写成String s = new String("uden");offset表示开始截取字符串的位置(从0开始),length表示截取长度。所以此例表示从数组a中下标为2的元素‘u’开始截取,截取长度为4,所以截取出的字符串为“uden”。
二、字符串操作
下面主要写了一些常用的API
1. 字符串连接
当连接多个字符串时,在每两个连接的字符串之间用“+”相连,“+”就是字符串的连接符,连接之后生成一个新的字符串。
String s1 = new String("hello"); String s2 = new String("world"); String s = s1 + " " + s2;
将s1、空格、s2进行连接,运行结果就是“hello world”。
当字符串和其他数据类型连接时,同样使用“+”连接符,连接之后的返回值是字符串。
2. 获取字符串信息
对一个字符串进行操作,我们首先需要知道它的长度,使用String类的length()方法可以获取声明的字符串对象的长度。
String s = "We are students";
System.out.println("字符串的长度是 : " + s.length());
这里要说明的是中间的空格也是属于s这个字符串
String类中提供了indexOf()和lastIndexOf()方法来获取指定字符的索引位置。区别在于,前者返回的是搜索的字符首次出现的位置的索引,后者返回的是搜索的字符最后出现位置的索引。
String str = "We are students"; System.out.println(str.indexOf("s")); // s首次出现的位置索引 System.out.println(str.lastIndexOf("s")); // s最后一次出现的位置索引
运行结果是7和14。
3.替换字符
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。(replace)该替换从字符串的开头朝末尾执行,例如,用 "hello" 替换字符串 "o" 中的 "w" 将生成 "hellw" 。
String s = "hello";
String replace = s.replace('o','w');
System.out.println(replace);
4.分割字符串
每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
String s = "1-2-3";
String[] split = s.split("-");
打印要用数组的打印方式出来可以看出效果:如 System.out.println(Arrays.toString(split));
6. 字母的大小写转换
String类还提供了字母的大小写转换的方法,即toLowerCase()和toUpperCase()方法,语法格式如下:
str.toLowerCase()
str.toUpperCase()
关于更多的API,小伙伴可以去查看API中文文档里面都有详细的介绍,下面附上网页链接:
三、字符串生成器
这里简单说一下StringBuffer和StringBuilder两个类(了解)
1. StringBuffer类
线程安全的可变字符序列,可将字符串缓冲区安全地用于多个线程
StringBuffer
上的主要操作是 append
和 insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append
方法始终将这些字符添加到缓冲区的末端;而 insert
方法则在指定的点添加字符。
2. StringBuilder类
一个可变的字符序列,
主要操作跟StringBuffer是差不多的,
将 StringBuilder
的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer
。