Java编程思想
字符串
字符串比较常用,但是内容也不是很多,这里就简要记录一下。
1、不可变String
String类是一个final类型的,因此不能被继承,一旦创建就不能修改。甚至当String作为参数时,其引用都会被复制一份,原来的并没有动。
2、重载的“+”和StringBuilder
在java中被重载的符号“+”和“+=”。这两个符号被用于字符连接时,其实都是编译器自动生成一个StringBuilder对象,使用该对象的append()方法实现字符串连接,这样效率会比较高。对于在循环体中使用字符串连接时,如果使用“+,+=”,会每次生成一个StringBuilder对字符串进行连接,但可以使用StringBuilder的append()方法,效率提升很大。
String str = “testString” ;
Int len = 10000;
String result1 = “” ; //这种效率比较低
For (int i=0;i<len;i++){
result1 += str ;
}
StringBuilder sb = new StringBuilder() ; //这种效率更高
For (int i=0;i<len;i++){
sb.append(str);
}
实际上对字符串连接可以使用StringBuffer不过因为它是线程安全的所以效率会稍微低一些。(使用:javap –c 类名)实现类文件的的反编译。
3、无意识的递归
其实就是在方法的toString()方法中打印输出this信息。而任何事时候直接输出类信息时,编译器都会去调用toString()方法,因此一般会在类中覆写Object中的该方法。如果要打印类的地址则要执行super.toString().
4、格式化输出
4.1:类似printf()方法
C语言中有用于占位的格式符号,而java中也有。但要是用
System.out.format()或者System.out.printf()。如:
System.out.printf(“name=%s,price=%.2f”,“mac”,8000.213);
4.2:格式化说明符
%[argument][flags][width][.precision]conversion
- Width:确定数据宽度;
- Precision:小数点精度
- Flags:-,表示右对齐,没有表示左对齐
注意:任何字符使用%b,都会输出一个true。
4.3:String.format()
这个里面直接可以接受转义字符。
String.format(“name=%s,price=%.2f”,“mac”,8000.213);
5、正则表达式
这个应该还是比较复杂的,我就在这里简单记录一些常用的,以后再慢慢深入研究。要是用的类:java.util.regex包中:Pattern和Matcher类。
Pattern pattern = Pattren.compile(regex);//正则表达式字符串;
Matcher m = pattern.matcher(string); //要匹配的字符串;
m.find():判断是否有匹配到的字符,类似于迭代器中的hasNext()方法;
m.group():匹配的结果,类似于next()方法。
6、split()
将字符串分割为一个字符串数组,其中可以添加正则表达式作为参数。