13 字符串

13 字符串

13.2 重载“+”和StringBuilder

在循环中使用“+”连接字符串每次进行连接时都会创建一个新的StringBuilder,所以,多次拼接字符串不要使用重载的“+”,改用StringBuiler.append()方法,但如果在append方法中又使用了“+”拼接字符串,那编译器就会调入陷阱,从而为你创建另一个StringBuilder对象处理括号内的字符串操作。

13.3 无意识递归

所有容器类都覆写了toString()方法,使得生成的String能够表达容器自身和容器所包含的对象。

public class InfiniteRecursion{
    public String toString(){
        return "InfiniteRecursion address:"+this+"\n";
    }
}

如果你创建上面这个类的对象,并试图打印出来,将会得到非常长的一串异常,因为这里发生了自动类型转换,编译器会自动调用this.toString()方法,从而发生递归调用。如果要打印对象地址,应该采用Object的toString()方法,不应调用this,而应调用super.toString()方法。

13.5.3 Formatter类

在java中,所有新的格式化功能都由java.util.Formatter类处理,可以将Formatter类看成一个翻译器,它将格式化的字符和数据翻译成结果,当创建一个Formatter对象时,需要向它的构造器传递一些信息,高速它最终结果应该向哪里输出。

String name = "233";
Formatter f = new Formatter(System.out);
f.format("my name is %s \n",name);

将把结果输出到System.out。
最常用的传入参数是一个PrintStream,OutputStream和File。

13.5 Formatter转换

类型转换符结果
d整数型(十进制)
cUnicode字符
bBoolean数值
sString
f浮点数
%字符“%”

13.5.6 String.format()

当只需要使用format()方法一次时,String.format()用起来很方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值