您的位置:首页 > 编程语言 > Java开发

java 之 字符串

2016-05-26 10:17 190 查看
1. 不可变字符串,String对象本质上是不可变得,而String类中的修改字符串方法,都是在原有字符串加上修改的内容创建一个新的字符串,原有的可以说是丝毫未动

public class Immutable {

public static String upcase(String s){
return s.toUpperCase();
}

/**
* <b>方法说明:</b>
* <ul>

* </ul>
* @param args 
*/
public static void main(String[] args) {
String m = "dsf";
System.out.println(m);
String qq = upcase(m);
System.out.println(qq);
System.out.println(m);
}

}

// console

dsf

DSF

dsf

就像上面的例子一样,把m传递给upcase()方法时,实际上传递的是一个引用的拷贝,(就是每次把Stirng对象作为方法的参数时,都会复制一份引用,而该引用所指的对象其实一直呆在单一的物理位置上)

2. 重载“+” 和 StringBuilder

String对象是不可以变得,可以为其加上任意多的别名,因为String对象具有只读特性,所以只向它的引用都不可能改变它的值。

不可变性会带来一定的效率问题,例如为String对象重载的"+"操作符就一个例子(重载:一个操作符在应用于特定的类时,被赋予了特殊的意义(+,+=是java仅有的两个重载过的操作符))

操作符“+”可用来连接String:

StringBuilder提供了全面丰富的方法,包括insert()、repleace()、substring()、reverse()、append() 等。这是jdk5引入的,之前使用的是StringBuffer,后者是线程安全的因此开销也会大一些;

由于以前的字符串拼接 StringBuilder.append() 方式比两个字符串直接相加的速度要快,后来 java 进行了升级改进,现在字符串直接相加的速度优于 append 方式,并且字符串相加的代码可读性更强,所以要求将所有 append 方法进行拼接的都改为字符串相加方式。
例如:

StringBuilder str = new StringBuilder();

str.append("王强").append("你好");
应改为:

String str = "";

str += "王强" + "你好";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: