字符串Word文档下载推荐.docx

上传人:b****2 文档编号:5794145 上传时间:2023-05-05 格式:DOCX 页数:12 大小:30.51KB
下载 相关 举报
字符串Word文档下载推荐.docx_第1页
第1页 / 共12页
字符串Word文档下载推荐.docx_第2页
第2页 / 共12页
字符串Word文档下载推荐.docx_第3页
第3页 / 共12页
字符串Word文档下载推荐.docx_第4页
第4页 / 共12页
字符串Word文档下载推荐.docx_第5页
第5页 / 共12页
字符串Word文档下载推荐.docx_第6页
第6页 / 共12页
字符串Word文档下载推荐.docx_第7页
第7页 / 共12页
字符串Word文档下载推荐.docx_第8页
第8页 / 共12页
字符串Word文档下载推荐.docx_第9页
第9页 / 共12页
字符串Word文档下载推荐.docx_第10页
第10页 / 共12页
字符串Word文档下载推荐.docx_第11页
第11页 / 共12页
字符串Word文档下载推荐.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

字符串Word文档下载推荐.docx

《字符串Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《字符串Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。

字符串Word文档下载推荐.docx

在上面的例子中,”+”运算符将字符串和数值型的变量连接了起来,系统自动将数值型变量转换成字符串。

也可以用简化运算符“+=”来向字符串末尾添加内容。

myName+=”Jr.”;

这个表达式等效于:

myName=myName+”Jr.”;

在这个例子中,它改变了myName的值,其值的后三个字符是“Jr.”。

二、常用方法

1.访问字符串对象

以字符串s=“Iamastudent.”为例

(1)intlength()

该方法返回字符串的长度,返回值类型为int;

如s.length()值为15;

(2)charcharAt(intindex)

该方法返回字符串中的第index个字符,返回值类型为char;

如s.charAt(0)值为I,s.charAt(7)值为s;

(3)intindexOf(intch)

该方法返回字符ch在字符串中第一次出现的位置,返回值类型为int;

如s.indexOf(‘a’)的值为2;

但如果字符串中没有字符ch,则返回值为-1;

字符大小写也有区别;

(4)intindexOf(Stringstr,intindex)

该方法的返回值是,在该字符串中,从第index个位置开始,字符串str第一次出现的位置,返回值类型为int;

如果没有对应的子字符串,则返回-1;

(5)StringsubString(intindex1,intindex2)

该方法的返回值是,在该字符串中,从第index1个位置开始,到第index2-1个位置结束的子字符串,返回值类型为String;

例:

MonthComp.java

(6)Stringtrim()

返回字符串的副本,忽略前导空白和尾部空白。

(7)Stringreplace(charoldChar,charnewChar)

返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar而生成的。

例如:

"

mesquiteinyourcellar"

.replace('

e'

'

o'

returns"

mosquitoinyourcollar"

(8)StringreplaceAll(String 

regex,String 

replacement)

 

使用给定的replacement字符串替换此字符串匹配给定的正则表达式的每个子字符串。

(9)String[]split(String 

regex)

根据给定的正则表达式的匹配来拆分此字符串。

RecordSplit.java

2.字符串比较(以s=“student”为例)

(1)equals(Objectobj)

该方法将该字符串与obj表示的字符串进行比较,如果两者相等,函数的返回值为布尔型值true,否则为布尔型值false;

如s.equals(“Student”)的值为false,因区分大小写;

2)equalsIgnoreCase(Stringstr)

该方法将该字符串与str表示的字符串进行比较,但比较时不考虑字符的大小写,返回值为true或false;

(3)compareTo(Stringstr)

该方法将该字符串与str表示的字符串进行大小比较,返回值为int型;

如果该字符串比str表示的字符串大,返回正值;

如果比str小,返回负值;

如果相等,返回0。

如pareTo(“fivestudents”)值为正;

pareTo(“twostudents”)值为负;

pareTo(“students”)值为0。

3.与其他数据类型的转换

(1)将int、long、float、double、boolean等类型的数据转换为String类型:

String.valueOf(基本数据类型);

如String.valueOf(“1.2”)的值为字符串“1.2”

(2)字符串转为其他数据类型

方法

返回值类型

返回值

Boolean.getBoolean(“false”)

Boolean

False

Integer.parseInt(“123”)

Int

123

Long.parseLong(“375”)

Long

375

Float.parseFloat(“345.23”)

Float

345.23

Double.parseDouble(“67892.34”)

Double

67892.34

例CakeSale.java

5.2、StringBuffer类(jdk1.4)

1.StringBuffer类对象表示的是字符串变量(一种可变字符串对象),每一个StringBuffer类对象都是可以扩充和修改的字符串变量,包括字符串长度和字符串内容的改变。

以下是常用的StringBuffer类构造方法:

(1)publicStringBuffer()

(2)publicStringBuffer(intlength)

(3)publicStringBuffer(Stringstr)

StringBuffer对象的修改与String对象的修改有着本质的区别:

⑴String对象的改变会引发新对象的创建。

⑵StringBuffer对象的改变建立在原有对象基础之上。

2.StringBuffer类常用的方法

⑴为StringBuffer的对象插入和追加、删除字符串

【方法】字符串缓存追加方法

append(charc)将字符c放到字符串缓存区之后;

append(Stringstr)将字符串str放在字符串缓存区之后;

append(typevariable)可以把variable转换为字符串,并与当前字符串连接,type可以是字符串、字符数组、单个字符和数值数据。

【方法】字符串缓存插入方法

insert(intk,charc)在字符串缓存区的第k个位置插入字符c;

insert(intk,Stringstr)在字符串缓存区的第k个位置插入字符串str;

方法insert(intindex,typevariable)把variable转换为字符串,然后将其插入到当前字符串中指定index的位置,type可以是字符串、字符数组、单个字符和数值数据。

【方法】字符串缓存删除方法

deleteCharAt(intindex)删除字符串缓存区里第index位置的字符。

【方法】字符串缓存替换方法

replace(intm,intn,Stringstr)将字符串缓存区里第m到n之间以字符串str取代,不包括第n个字符。

setCharAt(intindex,charc)更换StringBuffer字符串对象中某个字符,index表示更换字符的下标位置,c表示替换的目标字符。

⑵获取和设置StringBuffer对象的长度和容量的方法:

length、capacity、setlength

s1.length()--------返回s1中字符个数。

s1.capacity()--------返回s1的容量,即内存空间数量。

通常会大于length()

s1.setlength(intnewLength)--------改变s1中字符的个数,如果newLength大于原个数,则新添的字符都为空("

);

相反,字符串中的最后几个字符将被删除。

例StringDemo.java用两种不同的字符串类来逆转字符串

classStringDemo{

publicstaticvoidmain(Stringargs[]){

Stringpalindrome="

DotsawIwasTod"

;

intlen=palindrome.length();

StringBufferdest=newStringBuffer(len);

for(inti=(len-1);

i>

=0;

i--){

dest.append(palindrome.charAt(i));

//charAt(i)返回i位置所对应的字符

}

System.out.println(dest);

}

5.3StringBuilder

StringBuilder在某些方面和StringBuffer功能类似,但是它不是线程安全的,性能比StringBuffer高,始于JDK1.5

5.4StringTokenizer

Java语言中,提供了专门用来分析字符串的类StringTokenizer(位于java.util包中)。

该类可以将字符串分解为独立使用的单词,并称之为语言符号。

语言符号之间由定界符(delim)或者是空格、制表符、换行符等典型的空白字符来分隔。

其他的字符也同样可以设定为定界符。

StringTokenizer类的构造方法及描述。

构造方法

描 

StringTokenizer(Stringstr)

为字符串str构造一个字符串分析器。

使用默认的定界符,即空格符(如果有多个连续的空格符,则看作是一个)、换行符、回车符、Tab符号等

StringTokenizer(Stringstr,Stringdelim)

为字符串str构造一个字符串分析器,并使用字符串delim作为定界符

StringTokenizer类的主要方法及功能

方 

功 

StringnextToken()

用于逐个获取字符串中的语言符号(单词)

booleanhasMoreTokens()

用于判断所要分析的字符串中,是否还有语言符号,如果有则返回true,反之返回false

intcountTokens()

用于得到所要分析的字符串中,一共含有多少个语言符号

举例说明StringTokenizer类、类中方法的使用。

程序分析两个字符串,统计字符串中单词的个数。

StringTokenizer类的使用StringTokenizerDemo.java

importjava.util.*;

publicclassStringTokenizerDemo

{

 

publicstaticvoidmain(String[]args)

{

Stringstr1="

Helloworld!

ThisisJavacode,stringTokenizerDemo."

//声明并初始化字符串str1

Stringstr2="

HowtouseStringTokenizer?

StringTokenizer?

//声明并初始化字符串str2

StringTokenizerstrT1=newStringTokenizer(str1,"

.!

);

//创建StringTokenizer类的对象strT1,并构造字符串str1的分析器

//以空格符、"

"

、"

."

及"

!

作为定界符

StringTokenizerstrT2=newStringTokenizer(str2,"

?

//创建StringTokenizer类的对象strT2,并构造字符串str2的分析器

//以空格符及"

?

intnum1=strT1.countTokens();

//获取字符串str1中语言符号的个数

intnum2=strT2.countTokens();

//获取字符串str2中语言符号的个数

System.out.println("

str1has"

+num1+"

words.Theyare:

while(strT1.hasMoreTokens())

//利用循环来获取字符串str1中下一个语言符号,并输出

Stringstr=strT1.nextToken();

System.out.print("

\"

+str+"

"

\nstr2has"

+num2+"

while(strT2.hasMoreTokens())

//利用循环来获取字符串str2中下一个语言符号,并输出

Stringstr=strT2.nextToken();

运行结果如图所示。

图15-7 

程序运行结果

讨论:

比较一下String、StringBuffer、StringBuilder三者的区别:

(1)String是字符串常量,长度不可变

(2)StringBuffer是线程安全的可变字符序列,这个类里的所有方法是同步的

(3)StringBuilder在某些方面和StringBuffer功能类似,但是它不是线程安全的,性能比StringBuffer高,始于JDK1.5

JAVA中String与StringBuffer的区别

在java中有3个类来负责字符的操作。

1.Character是进行单个字符操作的,

2.String对一串字符进行操作。

不可变类。

3.StringBuffer也是对一串字符进行操作,但是可变类。

String:

是对象不是原始类型.

为不可变对象,一旦被创建,就不能修改它的值.

对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.

String是final类,即不能被继承.

StringBuffer:

是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象

它只能通过构造函数来建立,

StringBuffersb=newStringBuffer();

note:

不能通过付值符号对他进行付值.

sb="

welcometohere!

//error

对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer

中付值的时候可以通过它的append方法.

sb.append("

hello"

字符串连接操作中StringBuffer的效率要比String高:

Stringstr=newString("

welcometo"

str+="

here"

的处理步骤实际上是通过建立一个StringBuffer,然后调用append(),最后再将StringBuffertoSting();

这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.并且由于String对象是不可变对象,每次操作String都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.

看看以下代码:

将26个英文字母重复加了5000次,

Stringtempstr="

abcdefghijklmnopqrstuvwxyz"

inttimes=5000;

longlstart1=System.currentTimeMillis();

Stringstr="

for(inti=0;

i<

times;

i++)

str+=tempstr;

longlend1=System.currentTimeMillis();

longtime=(lend1-lstart1);

System.out.println(time);

可惜我的计算机不是超级计算机,得到的结果每次不一定一样一般为154735左右。

也就是154秒。

我们再看看以下代码

inttimes=5000;

longlstart2=System.currentTimeMillis();

StringBuffersb=newStringBuffer();

sb.append(tempstr);

longlend2=System.currentTimeMillis();

longtime2=(lend2-lstart2);

System.out.println(time2);

得到的结果为16有时还是0

所以结论很明显,StringBuffer的速度几乎是String上万倍。

当然这个数据不是很准确。

因为循环的次数在100000次的时候,差异更大。

不信你试试。

总结:

如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2