黑马程序员技术交流社区
标题:
知道String类的replace和StringBuffer类的replace区别吗。。
[打印本页]
作者:
谢毅
时间:
2013-1-23 00:22
标题:
知道String类的replace和StringBuffer类的replace区别吗。。
本帖最后由 谢毅 于 2013-1-23 15:23 编辑
StringBuffer是一个容器,里面是按索引值存放字符的,我们都知道字符都在字符常量区,不能修改,能改变的只能是指向他们的内存地址值,所以Buffer就是按索引值去替换掉内存地址值。
public class Str1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer s1=new StringBuffer("abcdefghik");
System.out.println(s1.hashCode());
s1=s1.replace(1,4, "ada");
System.out.println(s1);
System.out.println(s1.hashCode());
System.out.println("---------------------");
String s2="abcdefghik";
//System.out.println(s1.contains("sad"));
System.out.println(s2.hashCode());
s2=s2.replace("cd", "ada");
System.out.println(s2);
System.out.println(s2.hashCode());
}
}
复制代码
结果为:
7971559
aadaefghik
7971559
---------------------
-634317658
abadaefghik
1846299905
复制代码
作者:
︶ㄣ布丁
时间:
2013-1-23 03:34
String类是java中使用频率最高的类之一,常用replace的方法但是以前总是对这两个方法理解上有些曲解。现在更正之~
1.误区之一:replace只匹配第一个相同字符并替换之,而replaceAll是查找所有的。
更正:replace和replaceAll都是查找出所有匹配字符并替换之,最大的不同:replaceAll的参数是正则表达式,而replace是普通字符。
String path = "D:\\downloads\\test\\renmian";
将路径中的'\'替换为'\\'
String result1 = path.replace("\\", "\\\\");
String result2 = path.replaceAll("\\\\", "\\\\\\\\");
result1与result2的输出结果是一致的~
replace是匹配字符,替换字符;而replaceAll是查找正则表达式,用正则表达式来替换。
2.用replaceAll查找需要的字符串
String testStr = "
作者:
黄锦成
时间:
2013-1-23 10:01
String的replace返回的是一个新的字符串对象
StringBuffer的replace返回的是还是原来的StringBuffer对象,只不过内容变了
String str = "afadfadfafgadf";
String str1 = str.replace('a', 'd');
System.out.println(str==str1);
StringBuffer sb = new StringBuffer("fadfadfa");
StringBuffer sb1 = sb.replace(1, 2, "v");
System.out.println(sb==sb1);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2