Thinking in Java--字符串
来源:互联网 发布:samba for linux下载 编辑:程序博客网 时间:2024/05/17 01:01
1.String:(只需要明白两点)
①String对象是不可变的
②String类方法中所有对String对象的修改都是通过新建一个String对象来完成的
2.“+”重载与StringBuilder:
①用于String的“+”和"+="是Java中仅有的两个重载过的操作符,而Java并不允许程序员重载任何操作符
②StringBuilder是个更高效的类,特别是体现在String对象的"+"操作上,因为”+“操作是通过新建一个String对象来形成最终结果的。
而如果出现多次使用”+“操作的循环情形,将会产生多个中间String对象,造成效率低下。幸运的是,StringBuilder的append方法能够很好
的解决效率低下的问题。我们只需要在循环”+“操作前新建一个StringBuilder,之后的所有"+"操作通过append方法来代替,最后调用toString
方法就可以了。
【注意:append( a + ":" + b ),是个不好的操作,因为你已经创建了一个StringBuilder对象处理括号内的字符串操作】
【拓展:StringBuilder还提供了丰富的方法:insert、replace、substring、reverse、(最常用的append、toString);
如果你已经知道字符串大概有多长,那预先制定StringBuilder的大小可以避免多次重新分配缓冲,一定程度上提高了效率】
3.无意识的递归(通过例子来说明):
import java.util.*;public class InfiniteRecursion {public String toString() {return " InfiniteRecursion address: " + this + "\n";}public static void main( String[] args ) {List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();for ( int i = 0; i < 10; ++i )v.add( new InfiniteRecursion() );System.out.println( v );}}在这个例子里面,由于toString里面的(String+this+String)(+this)已经调用了toString,如此递归调用下去
【拓展:想要打印出对象的内存地址,应该调用Object.toString()方法】
4.格式化字符串和格式化说明符
①format()与printf()是等价的,不过String.format()方法可以用于PrintStrrem、PrintWriter
②%s对应String
③【precision】应用于String是,它表示打印String是输出字符的最大数量,应用于整数会触发异常
④%b应用于其它各种类型时的情况:
对于boolean基本类型或者Boolean对象,只要参数不为null,那转换的结果永远都是true,即使数字0的转换结果依然为true
- Thinking in Java--字符串
- Thinking in Java 整理笔记:字符串
- Thinking in Java 第13章 字符串
- 读thinking in java笔记(十二):字符串
- (Thinking in Java学习笔记)字符串
- Thinking in java-35 String 字符串
- thinking-in-java(13) String字符串
- [Java]Thinking in Java
- Thinking in java 从标准输出读取字符串
- 第十三章:字符串 《Thinking in java》学习笔记
- Thinking in Java——第十三章-字符串
- day16:《Thinking in Java》笔记第十三章---字符串
- Thinking in Java笔记
- 《Thinking in Java》读书笔记
- Thinking in java(1)
- Thinking in JAVA websites
- Thinking in java 笔记
- Thinking In Java (一)
- 微软2014在线笔试第二题 (对于问题中的k是有限制的,取值范围是1~9)
- Algorithm学习笔记 --- Flip Game
- Java nio ByteBuffer用法
- bsxfun vs. repmat in Matlab
- Asp.Net MVC4系列--进阶篇之AJAX
- Thinking in Java--字符串
- 面向对象的设计原则
- static 变量(静态变量)
- C标准函数库
- AudioToolbox 的使用 音频流
- contentSize、contentInset和contentOffset
- android:fastScrollEnabled和android:drawSelectorOnTop(listview当中)
- 公司职位名称及简介
- 使用 SVWebViewController 推出浏览器控制器