一、String类
在java语言中将字符串作为对象来处理,String类的对象表示由多个字符连接而成的字符串
(一)字符串的声明
String s="abc";
注意声明字符串变量必须经过初始化之后才可以使用
(二)创建字符串
方法一:String(char a[])
char a1[]={'a','b','c'};
String s1=new String(a1);
方法二:String(char a[],int offset,int length)
//offset表示开始截取字符串的位置,length表示截取字符串的长度
方法三:String(char[] value)
char[] a3={'a','b','c','d','e','f'};
String s3=new String(a3);
二、连接字符串
(一)连接字符串的方法
方法一:使用“+”连接
方法二:使用“concat”连接
方法三:使用“append”连接
运行之后发现后三种方法执行的时间较短,而第一种方法所花费的时间要远远多于后三种方法。
(二)分析:
1、使用“+”连接字符串时,会调用StringBuilder的append方法,最终调用toString方法转换成字符串。但不足的是,每一趟循环都会创建一个StringBuilder对象,所以就耗费了较多的时间。
2、通过查看concat方法的源代码发现,原理是通过一个数组的拷贝,速度要优于上一种方法,但是最后的return语句返回一个新的String对象,所以每一次循环都会创建一个新的String对象,影响了字符串连接的效率
3、查看append方法的源代码发现,实现原理是字符数组的处理,整个方法实现的过程中没有生成新的对象,只是在最后返回一个toString对象,所以效率最高。
StringBuilder和StringBuffer都拥有append()方法.而二者不同之处在于,在做一次append操作的时候,StringBuffer是线程安全的,因为做append()操作的时候,在方法前增加了synchronized操作。对效率的影响很小。
三、获取字符串信息
(一)获取字符串长度
实现方法:
输出结果为:size=16
可见length()方法返回的字符串的长度包含字符串中的空格。
(二)字符串查找
String类提供了两种查找字符串的方法,即indexOf()、lastIndexOf()方法。其中indexOf()方法返回的是要搜索的字符(串)首次出现的位置;lastIndexOf()方法返回的是要搜索的字符(串)最后出现的位置,如果没有检索到该字符串,该方法返回-1。
实例:
int index=s1.indexOf('o');
System.out.println("index="+index);
输出结果:index=5
在计算机中String对象是用数组表示的
(三)获取指定索引位置的字符
String s1="hnu tongxin 1501";
char ch = s1.charAt(4);
System.out.println("s1.charAt(4)="+ch);
输出结果:
s1.charAt(4)=t
说明指定位置处的字符不包含空格