1.String 对象是不可变的,而 JDK 中每一个看起来会修改 String 的方法,实际上都是创建了一个全新的 String,而最初的 String 对象则丝毫未动。
2.当我们将 String 作为方法参数传入时,实际上传递的是引用的一个拷贝。
3.对于一个方法而言,参数是为该方法提供信息的,而不是想让该方法改变自己。
4.String 对象具有只读性,所以只想它的任何引用都不可能改变它的值。
5.我们都是用 "+" 来拼接两个字符串,而编译器其实自动引入了 StringBuilder 来帮我们进行拼接,例如以下代码:
// 编译器底层调用了 StringBuilder 的 append() 然后调用了四次后,调用 toString 返回结果
String s = "abc" + "mango" + "def" + 47;
6.无意识的递归,重写 toString() 中使用 this,使得 this 隐式调用 toString(),从而陷入循环,如果想打印地址在应该调用 super.toString()。
正则表达是暂时跳过还未看。
网友评论