知识大全 正确使用String类应注意的几点
Posted 操作
篇首语:前方无绝路,希望在转角。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 正确使用String类应注意的几点相关的知识,希望对你有一定的参考价值。
正确使用String类应注意的几点! 以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
java lang String类对大家来说最熟悉不过了 我们写java程序很少能不用String的 本文讲述如何正确的使用String 内容主要涉及初始化 串联和比较等操作
首先我们必须清楚的一点是String类是final类型的 因此你不可以继承这个类 不能修改这个类 我们使用String的时候非常简单 通常都是String s = hello 但是Java API中同时提供了一个构造函数为String(String s) 因此你也可以这样使用String s = new String( hello ) 对于后面这样初始化一个String的方式是不推荐的 因为new操作符意味着将会在heap上生成一个新的对象 如果这样的操作发生在一个循环中 那么代价是惨重的 比如
Java代码
for(int i = ;i< ;i++)
String s = new String( hello );
这将会创建 个String类型的对象 由于String类是final的 因此这样的操作事实上是每次都生成了一个新的String对象的 如果你使用String s = hello ;那么就可以实现复用了 为什么可以复用呢 下面会有解释
当我们使用 + 实现串联操作的时候 比如String s = hello + world ;其实是通过StringBuffer类的append()方法实现的 最后返回String给s 如果有兴趣的话 你可以写一个简?在使用串联的时候我们同样应该注意String是final类 如果你需要多次串联比如
Java代码
String sql = xxx ;
sql = xxxx ;
sql = ssssss ;
那么为了提高效率节省空间 我们应该自己用StringBuffer来替代 + ;
通常对String的比较有两种情况 一个是使用== 另一个是使用equals()方法 注意==是对对象的地址进行比较的 而String中的equals()方法是覆蓋了Object类的方法 并且实现为对String对象的内容的比较 所以String s = new String( hello );String s = new String( hello ) 我们对s 和s 进行上述比较的时候 前者应该返回false 因为使用new生成的是两个不同的对象 后者应该返回true因为他们的内容是一样的 都是 hello 那么如果我们还有一个String s = hello ;他和s 的比较应该是什么样子的呢 答案是s ==s 为false equals的比较位true 事实上String类是维持着一个String池的 这个池初始化为空的 当我们String x = hello 的时候 hello就会被放入这个池中 当我们再次String y = hello 的时候 他首先去检查池中是否存在一个和hello内容一样的对象 如果存在的话就会把这个引用返回给y 如果不存在的话 就会创建一个并放入到池中 这样就实现了复用 在String有一个方法intern()他可以把String的对象放入到池冲并返回池中的对象 如果我们对s (String s = new String( hello ))调用intern s = s intern()这时候 我们再把s 和s 进行 == 的判断 你会发现结果返回true!
看下面的例子
Java代码
public class StringTest
public static void main(String[] args)
String s = hello ;
String s = new String( hello );
String s = new String( hello );
testString(s s s );
s = s intern();
System out println( after s intern );
testString(s s s );
private static void testString(String s String s String s )
System out println( s = s is +(s ==s ));
System out println( s = s is +(s ==s ));
System out println( s equals(s ) is +s equals(s ));
System out println( s equals(s ) is +s equals(s ));
输出结果为
s = s is false
s = s is false
s equals(s ) is true
s equals(s ) is true
after s intern
s = s is true
s = s is false
s equals(s ) is true
cha138/Article/program/Java/ky/201311/28846相关参考