说到,字符串,那就不得不提一下字符了,字符相当于一个数,而字符串相当于多个数构成的数组,我们创建一个字符串相当于创建一个字符数组,字符串的创建方式有一下几种:
String s = new String();
char a[] = {'h','e','l','l','o'};
String s = new String("hello");
String s ="hello";
//这几种创建方式等价
可以看到,以上两种创建方式一种为没有给字符串赋具体值,一种为定义中就已经赋了值。跟之前说的数组的定义相似,具体使用哪种方式根据具体情况。
字符串截取此外,我们还可以使用 String( char a[], int offset, int length)方法创建对象
先来看一个具体的实例:
public class OOTest06{
public static void main(String[] args){
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a,2,4);
System.out.println(s);
}
}
看一下输出结果:
可以看到,其实现了字符串的截取功能, 在 String( char a[], int offset, int length)方法中,char a[]表示要进行截取操作的字符串,int offset表示开始截取的字符数组下标,int length表示截取长度。
Java中既然字符串可以截取,那也少不了字符串的连接。
字符串连接字符串的连接相对来讲比较简单,连接多个字符串时,每两个字符串之间用“+”相连,例如:
String s1 = new String("hello");
String s2 = new String("world");
String s = s1 +" "+s2;
输出结果如下:
字符串不仅可以和字符串进行连接,也可以和其他的数据类型进行连接,连接后的返回值是字符串。
获取字符串信息对一个字符串进行操作,我们首先要知道它的长度,获取字符串长度,我们用String类的length()方法,例如:
String s = "We are students";
System.out.println("字符串的长度是:"+s.length());
输出结果如下:
注意:空格也算在字符串里面。
我们要获取字符串信息除了长度,还有索引位置,也就是某个字符在字符串中第一次出现的位置或最后一次出现的位置。我们用.indexOf()获取字符首次出现的位置,用.lastIndexOf()获取字符最后出现的位置。例如:
String s = "We are students";
System.out.println(s.indexOf("s"));
System.out.println(s.lastIndexOf("s"));
运行结果如下:
当然,我们也可以获取指定位置的字符,使用String类中的charAt()方法,例如:
String s = "We are students";
char a =s.charAt(7);
System.out.println("a的值为:"+a);
运行结果如下:
StringBuffer又称可变字符序列,字符串缓冲区支持可变的字符串,StringBuffer是一个容器,里面可以装很多的字符串并且可以对字符串进行各种操作。
StringBuffer()构造一个不带字符的字符串缓冲区,其初始容量为16个字符。
以下是StringBuffer类常用的方法:
append(char[] str)//将char数组参数的字符串表示形式追加到此序列
capacity()//返回当前容量(int类型)
delete(int start,int end)//移除次序列子字符串中的字符。
indexOf(String str)//返回第一次出现指定字符串在该字符串中的索引
length()//返回次序列长度
substring(int start,int end)//返回一个新的String类型,包头不包尾
以下是演示代码:
StringBuffer sb = new StringBuffer();
sb.append("haha");//添加字符串
System.out.println(sb);
sb.insert(2,"it");//在指定下标位置插入
System.out.println(sb);
sb.delete(1,4);//删除,包头不包尾(不包含4)
System.out.println(sb);
sb.replace(1,4,"cast");//替换指定范围内的内容
System.out.println(sb);
String str = sb.toString();//返回String类
System.out.println(str);
输出结果如下:
总而言之,StringBuffer它可以改变字符序列的长度和内容。无论多少数据,数据是什么类型都不重要,只要最终变成字符串就可以使用StringBuffer这个容器。
String与StringBuffer的区别执行速度的运行快慢:StringBuffer>String.
String为字符串常量,创建之后不可更改,StringBuffer为字符串变量,创建之后可更改,String适用于少量字符串操作的情况,StringBuffer适用于多线程下在字符缓冲区进行大量操作的情况。



