Thinking in Java - 学习笔记 - (十三)字符串

Java编程思想 - 第十三章 - 字符串

可以证明,字符串是计算机程序设计中最常见的行为

不可变String

String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。

重载“+”与StringBuilder

不可变性会带来一定的效率问题。为String对象重载的“操作符”就是一个例子。

如果字符串操作比较简单,那就可以依赖编译器,它会自动生成一个StringBuilder来提高效率。来合理地构造最终的字符串结果。但是如果有循环操作,那么最好自己创建一个StringBuilder对象。

无意识的递归

如果你希望toString()方法打印出对象的地址,不要使用this关键字。

public class InfiniteRecursion {
    public String toString() {
        //这里发生了自动类型转换,由InfiniteRecursion类型(this)转换成String类型。
        //因为编译器看到“+”,而this不是String,于是会试着把this转换为String。
        //转换的方法正是调用this上的toString()方法,于是发生了递归调用
        return " InfiniteRecursion address: " + this + "\n";
    }
    public static void main(String[] args) {
        List<InfiniteRecursion> v = new ArrayList<>();
        for (int i = 0; i < 10; i++)
            v.add(new InfiniteRecursion());
        System.out.println(v);
    }
}

格式化输出

    System.out.printf("Row 1: [%-5d %4f]\n", 5, 5.2);

格式化说明符

    %[argument_index$][flags][width][.precision]conversion

width控制最小尺寸,默认右对齐,可以通过使用“-”来改变对齐方向。

precision指明最大尺寸。对浮点数是表示小数位数(默认6位),多则舍入,少则补零。无法用于整数。

正则表达式

RegexGolf - 练习正则表达式的网站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值