码迷,mamicode.com
首页 > 其他好文 > 详细

关于字符串

时间:2017-08-13 23:27:40      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:har   声明   java类   eof   常量池   拼接   结合   线程   value   

  Java没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类,叫做String。它允许使用+号对字符串进行拼接,当将一个字符串与一个非字符串进行拼接时,后者会被转换成字符串。对于修改字符串String类并没有提供用于修改字符串的方法,并不能对实际字符串进行修改,字符串被声明为常量对象,以final修饰。而将字符串内容改变,如拼接操作只是改变了改对象的引用地址,而原来的字符串依然存在于内存中,并没有被修改。这样会使通过拼接创建新串的效率变低,但是却使字符串实现了共享。

  对于字符串的判等,如果两个串都是通过直接付值的方式进行声明的,那么可以用==进行判等,但是如果一个为直接赋值,另一个采用构造器,或全部采用构造器,就要用equals进行判等,这是因为采用直接赋值,会使字符串直接从常量池中寻找,找不到存入常量池中。而采用构造器,会使字符串存入堆中,不管堆中有没有,然后去常量池找,找不到就存入,然后堆中存在常量池中地址。而equals方法:

 1 public boolean equals(Object anObject) {
 2         if (this == anObject) {
 3             return true;
 4         }
 5         if (anObject instanceof String) {
 6             String anotherString = (String)anObject;
 7             int n = value.length;
 8             if (n == anotherString.value.length) {
 9                 char v1[] = value;
10                 char v2[] = anotherString.value;
11                 int i = 0;
12                 while (n-- != 0) {
13                     if (v1[i] != v2[i])
14                         return false;
15                     i++;
16                 }
17                 return true;
18             }
19         }
20         return false;
21     }

先判断是不是同一引用地址,如果不是就判断类型是不是String,再判断串中每一个字符是不是相同。

当需要频繁短串结合成长字符串时,拼接操作就会又费时又费力,所以就引入了类StringBuffer和StringBuilder。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的,但是StringBuilder处理速度要更快,所以大多建议使用StringBuilder,但涉及安全时要采用StringBuffer。

一些常用方法: append(String s)//将指定的字符串追加到此字符序列。

        reverse()//将此字符序列用其反转形式取代。

        delete(int start, int end)//移除此序列的子字符串中的字符。

        insert(int offset, int i)//将 int 参数的字符串表示形式插入此序列中。

        replace(int start, int end, String str)//使用给定 String 中的字符替换此序列的子字符串中的字符。

关于字符串

标签:har   声明   java类   eof   常量池   拼接   结合   线程   value   

原文地址:http://www.cnblogs.com/PersistWp/p/7355112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!