Java笔记之:String(一)

来源:互联网 发布:汪涵的胡子 知乎 编辑:程序博客网 时间:2024/06/03 18:51
1, String 是不可变的


String q="howdy";
print(q); //howdy
String qq=s.toUpperCase();
print(qq);//HOWDY
print(q);//howdy


2,String 重载符+和+=

一、因为String是不可变的,所以String的+和+=操作效率很低,所以java自动为操作引入了StringBuilder类进行优化。


二、效率:如果字符串操作比较简单可以让编译器自动优化,如果操作比较复杂,循环此次比较多,最好手动建立StringBuilder类进行操作.
常用操作:
StringBuilder sb = new StringBuilder();
sb.append(s);
sb.toString();
sb.delete();
sb.insert(s);
sb.replace();
sb.subString();
sb.reverse();


三、StringBuffer:StringBuilder是Java SE5引入的,在这之前用的StringBuffer。StringBuffer是线程安全的,因此开销会大一些。




3,容器类执行toString()方法时,会调用每个元素的toString()方法.


避免如下递归调用
public class test{
public String toString(){
return "test"+this;//可使用 super.toString();
}
}


4,格式化输出
一、System.out.format


System.out.format("Row 1:[%d %f]\n", x,y);
//or
System.out.printf("Row 1:[%d %f]\n", x,y);


二、Formatter类


所有的格式化功能都由java.util.Formatter类处理.创建一个Formatter时,要传入信息告诉它向哪里输出.
Formatter f = new Formatter(System.out);
f.format("");//输出到System.out


格式化说明符:
%[argument_index$][flag][width][.precision]conversion


width:指定域的长度
flag:数据对其方向,默认是右对齐,用"-"表示左对齐
precision:指明最大尺寸


Formatter f = new Formatter(System.out);
f.format("%-15s %5s %10s \n", "item","Qty","price");

f.format("%-15.15s %5d %10.3f \n", "cxh",1,14.39);


output:
item              Qty      price 
cxh                 1     14.390 


Formatter转换
d 整数型;
c Unicode字符;
b Boolean值;
s String;
f 浮点数;
e 浮点数(科学计数)
x 整数16进制
h 散列码(16进制)
% 字符"%"


三,String.Format:生成格式化的String对象.参数同Formatter.format();


String.format("",args);



原创粉丝点击