第13章 字符串

2018-03-20  本文已影响0人  卡萨布兰卡ginger

1.不可变的String

tips:对于一个方法而言,参数是为了该方法提供信息的,而不是想让该方法改变自己的。

jdk源码1 jdk源码2

jdk源码中,都是返回一个新的对象,而不是原来的对象。传递的是引用的一个拷贝,引用指向的对象没有改变。

2.重载“+”和StringBuilder

重载操作符:Java中不允许程序员重载操作符,c++中允许。Java中,用于String类型的“+”和“+=”是仅有的重载操作符。什么叫做重载操作符?用在特定类上,赋予不同含义的操作符。

Java反编译

在Java编译器中(编译器可以优化代码),使用了StringBuilder来优化代码,所以StringBuilder效率比String高。StringBuffer,Java SE5以前的,线程安全的,开销大。tips:如果要在toString()中中使用循环,最好自己创建一个StringBuilder对象,不然编译器会在循环内部重复创建StringBuilder对象。

3.无意识的递归

在toString()方法中调用return “something”+this;会循环调用toString()方法,注意使用super.toString()。

4.String上的操作

当需要改变字符串时,返回一个新对象,如果没有改变时,返回指向原对象的引用。

5.格式化输出

1.format 2.Formatter类,%s表示插入的是String类型的。转换成boolean类型是,和其他语言有区别。3.String.format() 

6.正则

Scanner类:在结束的时候回抛出IOException异常,不需要显式抛出异常。

StringTokenizer类:在String支持正则、Scanner类之前。目前基本不在用。

上一篇 下一篇

猜你喜欢

热点阅读