42 java基础之字符和字符串Word文档格式.docx
- 文档编号:21976143
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:8
- 大小:19.40KB
42 java基础之字符和字符串Word文档格式.docx
《42 java基础之字符和字符串Word文档格式.docx》由会员分享,可在线阅读,更多相关《42 java基础之字符和字符串Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
Character类只是构造函数,它创建了一个Character对象包含了由参数提供的数值。
一旦Character对象被创建,它包含的数值就不能改变。
compareTo(Character)
一个实例方法比较了由两个Character对象容纳的数值:
方法被调用的对象(即例子中的a)以及方法的参数(即例子中的b)。
这个方法返回一个整数表明在当前对象中的数值是否大于、等于或者小于参数给定的数值。
如果字母的数值较大那么这个字母就较大。
equals(Object)
一个实例方法,它比较当前对象容纳的数值和由其它容纳的数值。
这个方法在两个对象容纳的数值相等的时候返回true。
toString()
一个实例方法,它将对象转换为字符串。
结果的字符串在长度上就是一个Character对象并且它包含了有这个Character对象容纳的数值。
charValue()
一个实例方法,它返回由Character对象容纳的数值作为原始字符数值。
isUpperCase(char)
类方法决定是否原始字符数值为大写。
这个是许多Character类方法中的一个,它可以检查或者操作字符数据。
下面我们再谈谈于string(字符串)有关的几个问题:
1.为什么有两个String类:
String和StringBuffer
2.创建Strings和StringBuffers
3.存取器函数
4.修改StringBuffers
5.将对象转换为Strings
6.将String转换为数字
7.Strings和JAVA编译器
(1)为什么有两个String类:
String和StringBuffer
JAVA平台提供了两个类:
String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。
这个String类提供了数值不可改变的字符串。
比如,如果你编写一个方法,它需要字符串数据并且方法不能修改字符串,而要将一个String对象传递给方法。
而这个StringBuffer类提供的字符串进行修改。
当你直到字符数据要改变的时候你就可以使用StringBuffer。
典型地,你可以使用StringBuffers来动态构造字符数据。
比如,从一个文件读文本数据。
因为Strings是常量,所以它用起来比StringBuffers更有效,并且可以共享。
因此在允许的情况下还是使用Strings。
下面是一个例程StringsDemo,它反转了字符串中的字符。
这个程序同时使用了String和StringBuffer:
publicclassStringsDemo{
publicstaticvoidmain(String[]args){
Stringpalindrome="
DotsawIwasTod"
;
intlen=palindrome.length();
StringBufferdest=newStringBuffer(len);
for(inti=(len-1);
i>
=0;
i--){
dest.append(palindrome.charAt(i));
}
System.out.println(dest.toString());
这个程序的输出为:
doTsawIwastoD
(2)创建Strings和StringBuffers
字符串经常是由双引号括起的一系列字符组成。
比如,当有以下的字符串,JAVA平台就创建一个String对象,它的数值为Goodluck。
"
Goodluck"
这个StringsDemo程序使用这个记述来创建字符串,它是由palindrome变量引用的:
同样你可以利用其它方法来创建String对象:
使用new关键字和构造函数。
String类提供了几个构造函数,它允许你提供字符串的初始值,它们是使用不同的资源的,比如字符的数组、字节的数组或者一个StringBuffer。
char[]helloArray={'
h'
'
e'
l'
o'
};
helloString=newString(helloArray);
System.out.println(helloString);
上面的这段程序输出为:
hello。
你必须使用new来创建一个StringBuffer。
StringsDemo程序创建了SringBuffer,它是由dest引用的,这里使用了设置缓冲区容量的构造函数。
这个代码创建了一个字符串的缓冲区,这个缓冲区的容量等于被palindrome引用的字符串的长度。
这个确保了为dest只分配一个内存,因为它只有包含被复制的字符串那么大的空间。
通过初始化字符串的缓冲区的容量,你最小化必须分配的内存空间。
这就使得你的代码更加有效,因为内存分配是相对高级的操作。
(3)存取器函数
首先讲解一下获得String或者StringBuffer的长度:
获得有关对象信息的方法称为存取器函数。
你可以用在字符串和字符串缓冲区的一个存取器方法是length方法,它可以包含在字符串或者字符串缓冲区的字符的个数。
下面给出一个例程,当这个程序执行后,len就将等于17:
除了length,StringBuffer类还有一个方法叫做capacity,它是返回为字符串缓冲区分配的空间大小而不是空间使用了多少。
比如,字符串缓冲区的容量在StringsDemo例程中被dest引用时,它是不能改变的,虽然它的长度在每次的循环中增加1。
如图15,给出了在dest里面已经有9个字符之后的容量和长度。
(图15)
一个字符串缓冲区的长度是它包含的字符的个数。
一个字符串缓冲区的容量是被分配的字符空间的数量。
而String类没有capacity方法,因为字符串不能改变。
下面讲讲索引String或者StringBuffer得到字符:
你可以通过使用charAt存取器来在一个特定的位置索引一个字符串或者字符串缓冲区以得到字符串。
第一个字符的索引是0,最后一个字符的索引是length()-1。
比如,下面的代码在字符串中得到索引为9的字符:
StringanotherPalindrome="
Niagara.Oroaragain!
charaChar=anotherPalindrome.charAt(9);
因为索引是从0开始的,所以索引为9的字符为'
O'
,如图16所示:
(图16)
使用charAt方法来在特定的索引下得到字符。
如图16所示给处了计算字符串最后一个字符的索引的方法,你必须将length方法返回的数值减去1才得到最后一个字符的索引。
如果你想从一个字符串或者字符串缓冲区得到多个字符,你可以使用substring方法。
这个substring方法有两个版本,如下表所示:
方法
描述
Stringsubstring(int)
返回一个新的字符串,它是这个字符串或者字符串缓冲区的一个子串。
第一个整数参数指定了第一个字符的索引。
第二个整数参数是最后字符-1的索引。
这个子串的长度就是第二个整数减去第一个整数。
如果第二个整数没有,那么substring就扩展到整个字符串的结尾。
Stringsubstring(int,int)
下面的代码是得到字符串"
从索引为11到索引为15之间的子串,结果得到单词"
roar"
:
Stringroar=anotherPalindrome.substring(11,15);
如图17所示:
(图17)
使用substring方法来得到字符串或者字符串缓冲区的一部分。
这里一定要记住索引是从0开始的。
(4)修改StringBuffers
reverseIt方法使用StringBuffer的append方法来增加一个字符到dest字符串末尾:
classReverseString{
publicstaticStringreverseIt(Stringsource){
inti,len=source.length();
for(i=(len-1);
dest.append(source.charAt(i));
returndest.toString();
如果这个被增加的字符导致StringBuffer的大小超过当前的容量,这个StringBuffer就会为它分配更多的内存。
因为内存分配示相对高级的操作,所以你可以同时初始化StringBuffer的容量为较合理的大小来使你的代码更有效率。
比如reverseIt方法以初始的容量来构造StringBuffer等于源字符串的长度,以只为dest分配一次内存。
用在reverseIt的append方法只是一个StringBuffer方法的其中一种,它在StringBuffer末尾增补了一个数据。
有几种append方法来增补各个类型的数据(比如float、int、boolean以及对象)到StringBuffer末尾。
但是在增补操作之前,数据都要先转换为字符串。
下面讲讲插入字符:
有时候,你可能想插入数据到StringBuffer中间。
你可以使用StringBuffer的insert方法来实现。
以下的这个例子就是介绍如何将一个字符串插入到StringBuffer中去的:
StringBuffersb=newStringBuffer("
DrinkJava!
);
sb.insert(6,"
Hot"
System.out.println(sb.toString());
这些代码将输出:
DrinkHotJava!
利用StringBuffer的许多insert方法,你可以在插入数据之前指定索引。
在上面的例子中,"
要插到"
Java"
的'
J'
之前。
因为索引是从0开始的,所以'
的索引为6。
为了插入数据到StringBuffer之前,使用索引0.为了在StringBuffer的末尾插入数据,你可以将所以等于StringBuffer的长度或者使用append方法来增补。
下面讨论设置字符:
另外一个有用的StringBuffer修改量是setCharAt,它在StringBuffer的指定位置用参数列表中的指定字符来替换字符。
SetCharAt在你想重新使用StringBuffer的时候是很有用的。
(5)将对象转换为Strings
首先介绍toString方法:
经常需要将一个对象转换为String,因为你需要将它传递给方法,而这个方法只接收String数值。
前面我们使用reverseIt方法使用了StringBuffer的toString方法来将StringBuffer转换为String对象。
所有的类从对象类继承了toString,并且在java.lang包的许多类重载了这个方法来提供一个很有意义的方法
下面说说valueOf方法:
简单起见,String类提供了一个类方法valueOf。
你可以使用valueOf来转换不同类型的变量为String。
比如,为了打印pi的数值,你可以这样来编写代码:
System.out.println(String.valueOf(Math.PI));
(6)将String转换为数字
String类本身没有提供任何的方法来转换String为浮点型、整型或者其它的数值类型。
但是,"
typewrapper"
类的四种类型(integer、Double、Float和Long)提供了一个类方法valueOf来将String转换为那个类型的对象。
举例如下:
StringpiStr="
3.14159"
Floatpi=Float.valueOf(piStr);
(7)Strings和JAVA编译器
JAVA编译器使用了String和StringBuffer类来处理字符串和字符串的连接。
下面先讲讲Strings:
在JAVA种,你可以在双引号之间指定字符串,如:
HelloWorld!
你可以在任何使用String对象的地方使用字符串。
比如,System.out.println接收一个String参数,所以你可以在这里使用字符串了。
System.out.println("
MightIaddthatyoulooklovelytoday."
同样,你可以使用从字符串直接使用String方法,比如:
intlen="
GoodbyeCruelWorld"
.length();
因为编译器自动为字符串创建了一个新的String对象,你可以使用字符串来初始化一个String对象:
Strings="
HolaMundo"
上面的这条语句等价于下面的语句:
Strings=newString("
最后讲讲字符串的连接以及+运算符:
在JAVA种,你可以使用+来连接字符串,比如:
Stringcat="
cat"
con"
+cat+"
enation"
这条语句看起来有点问题,因为我们直到Strings是不能改变的。
但是,在这条语句的背后,编译器却使用了StringBuffers来执行字符串的连接。
上面的语句实际上编译为:
System.out.println(newStringBuffer().append("
).
append(cat).append("
).toString());
同样你可以使用+运算符号来增不一个String:
Java'
sNumber"
+1);
在JAVA中,在执行字符串连接操作之前编译器讲非String的数值(如本例的整数1)转化为一个String对象。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 42 java基础之字符和字符串 java 基础 字符 字符串