一、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 说明指定位置处的字符不包含空格 |
|