Charsequence
最近在学习Android但是在学习过程中发现CharSequence这个数据类型,自己真的是不了解,在上网找了找,原来这是一个接口:在JDK1.4中,引入了CharSequence接口,实现了这个接口的类有:CharBuffer、String、StringBuffer、StringBuilder这个四个类。
CharBuffer为nio里面用的一个类,String实现这个接口理所当然,StringBuffer也是一个CharSequence,StringBuilder是Java抄袭C#的一个类,基本和StringBuffer类一样,效率高,但是不保证线程安全,在不需要多线程的环境下可以考虑。
提供这么一个接口,有些处理String或者StringBuffer的类就不用重载了。
但是这个接口提供的方法有限,只有下面几个:charat、length、subSequence、toString这几个方法,感觉如果有必要,还是重载的比较好,避免用instaneof这个操作符。
ublic class TestFormatter {
public static void main(String[] args) {
//%[argument_index$][flags][width][.precision]conversion
Formatter f1 = new Formatter(System.out);
//格式化输出字符串和数字
f1.format("格式化输出:%s %d", "a", 1235);
System.out.println("\n--------");
//日期的格式化
Calendar c = new GregorianCalendar();
f1.format("当前日期:%1$tY-%1$tm-%1$te", c);
System.out.println("\n--------");
//日期的格式化,并将格式化结果存储到一个字符串变量中
String s = String.format("当前日期:%1$tY-%1$tm-%1$te", c);
System.out.println(s);
//2$:取第二个参数
//-: 指定为左对齐,默认右对齐
//5:最大输出宽度为20,不够会补空格,实际若超过则全部输出
//.2:在此表示输出参数2的最大字符数量,如果是浮点数字,则表示小数部分显示的位数
//s :表示输入参数是字符串
f1.format("%2$-5.2s %1$2s", "123", "456");
//将格式化的结果存储到字符串
System.out.println("\n--------");
String fs = String.format("身高体重(%.2f , %d)", 173.2, 65);
System.out.println(fs);
//printf()本质上也是用System.out作为输出目标构造Formatter对象
//调用format方法,并将printf的参数传给format方法而得。
System.out.println("\n--------");
System.out.printf("身高体重(%.2f , %d)", 180.2, 65);
}