Java初学者:String类

一、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”连接

 

运行之后发现后三种方法执行的时间较短,而第一种方法所花费的时间要远远多于后三种方法。

+

concat

StringBuffer

StringBuilder

MidOfadd=10709

MidOfconcat=9

MidOfBuffer=8

MidOfBuilder=8

()分析:

1、使用“+”连接字符串时,会调用StringBuilderappend方法,最终调用toString方法转换成字符串。但不足的是,每一趟循环都会创建一个StringBuilder对象,所以就耗费了较多的时间。

2、通过查看concat方法的源代码发现,原理是通过一个数组的拷贝,速度要优于上一种方法,但是最后的return语句返回一个新的String对象,所以每一次循环都会创建一个新的String对象,影响了字符串连接的效率

3、查看append方法的源代码发现,实现原理是字符数组的处理,整个方法实现的过程中没有生成新的对象,只是在最后返回一个toString对象,所以效率最高。

StringBuilderStringBuffer都拥有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

说明指定位置处的字符不包含空格

猜你喜欢

转载自blog.csdn.net/HNU_Csee_wjw/article/details/51836852