String,StingBuffer,StingBuilder

来源:互联网 发布:我国能源现状数据 编辑:程序博客网 时间:2024/05/21 09:44

String 使用private final char value[] 来实现字符串的存储的,String对象创建之后,就不能再修改此对象中存储的字符串内容,是不可变字符串。

String类有一个特殊的创建方法,就是使用“”双引号来创建,如果用new String("zifuchuan")实际上是创建了两个对象,一个是通过""双引号创建的,另一个是new出来的对象,但是他们两个创建的时期不同(双引号的创建),一个是编译期创建的(利用new创建的对象)。

利用双引号创建的对象是编译期常量,编译时已经能确定它的值了,在编译好的class文件中,它已经在String Pool(字符串常量池)中了,接下来如果还有用双引号创建相同的字符串,则直接引用。

StingBuffer和StringBuilder是可变字符串,可以对其进行追加、插入、删除、替换等操作。

StringBuffer是线程安全的,但是速度慢,StringBuilder不是线程安全的,但是速度快。

String与StringBuffer的效率比较:

String的效率好于StringBuffer,因为JVM会直接作出连接操作,然后赋值给result,只开辟了一次内存段。编译StringBuffer后还要做append处理,花的时间要长一些。

这个两种效率都一致.

StringBuffer面试的关键点:

不能简单的认为append()效率好于"+"。

不要使用new创建string

注意intern()的使用。

在编译期能够确定字符串值得情况下,使用“+”效率最高。

避免使用“+=”来构造字符串。


0 0
原创粉丝点击