购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

陷阱8

鱼龙混杂
——为字符串缓存构造器传递字符

在生活当中,有许多东西是不允许有任何偏差的,否则就会造成无法挽回的后果,比如,上医院买药,差一个字,就有可能成天壤之别,就很有可能危害到病人的生命,所以一定要认真谨慎。

类StringBuffer提供了一些构造方法,可以创建字符串缓冲区对象,用于存储可变的字符序列,其中该类的常用构造方法有如下3个:

● StringBuffer()

构造一个默认初始容量为16个字符、不带初始字符的字符串缓冲区对象。

● StringBuffer(int capacity)

构造一个具有参数指定的初始容量,但不带初始字符的字符串缓冲区对象。

● StringBuffer(String str)

构造一个由参数指定的初始字符的字符串缓冲区对象。

注 意

StringBuffer类没有char型入口参数的构造方法,如果用一个字符作为其构造方法的入口参数,则等同于为其传递了一个int型的入口参数,这个值就是该字符在Unicode表中的位置值,也就是说创建的是一个具有参数指定的初始容量,但不带初始字符的字符串缓冲区对象。

StringBuffer类的错误用法示例:

创建一个初始字符是大写字母H的字符串缓冲区对象,并依次为该对象追加小写字母e、l、l和o,使其能输出字符串“Hello”。

说 明

运行上面的程序,其输出的是字符串“ello”,并不是期望的字符串Hello,这是为什么呢?原因在于第一条语句,因为StringBuffer类并没有提供一个char型入口参数的构造方法,所以在这里自动将char型参数,即字符H转换为整数值 72,也就是创建了一个初始容量为72,但没有初始字符的字符串缓冲区,所以字符串缓冲区中并没有存储字符H,因此输出了字符串“ello”。

编程准则:知识点要准确,不要模棱两可

在编写程序时,对于任何一条语句都要保证知识点准确,即使是一条变量声明语句,如果有错误,也可能会给整个系统、给用户造成严重的经济损失,因此对于模棱两可的知识,一定要弄清楚后再确定是否使用,如在上面的示例中,如果StringBuffer对象存放的是药品名称或其他重要信息,后果就不堪设想了。

将上面示例的代码修改正确:

说 明

运行本示例,程序会输出所期望的字符串“Hello”,这是因为StringBuffer类有String类型入口参数的构造方法,而第一条语句创建了正确的字符串缓冲区对象,其初始内容为字符“H”,所以输出了正确的结果。 E/QqZmx16zBZ3QWtiJIl8v5s+7MZy1iM3JiBkajApjnmd7jlOxak43PsRcyladTX

点击中间区域
呼出菜单
上一章
目录
下一章
×