无论是初学者还是在java这条路上游荡了几年的童鞋都会每每想起String与StringBuffer的区别这个话题!今天再次看见这个话题,该是终结的时候咯!
原文:
http://www.iteye.com/topic/142364#422534
看原文后我的总结:
java常量池:
http://wenku.baidu.com/view/4a2f961c59eef8c75fbfb348.html
注意为对象在堆中编写的地址变化以及不变化哦
.
1.将textString定义为局部变量
public class testStringStringBuffer {
public static void stringReplace (String text) {
text = text.replace('j' , 'i');
System.out.println (text);
}
public static void bufferReplace (StringBuffer text) {
text = text.append("C");
}
public static void main (String args[]) {
String textString = new String ("java");
StringBuffer textBuffer = new StringBuffer ("java");
stringReplace (textString);
bufferReplace (textBuffer);
System.out.println (textString + textBuffer);
}
}
输出结果:
iava
javajavaC
2.将textString定义为全局变量
/**
*@source:http://www.iteye.com/topic/142364#422534
*
*@function:
*
* @author ocaicai@yeah.net 2011-6-29
*
*/
public class testStringStringBuffer {
static String textString = null;// 将textString定义为全局变量
public static void stringReplace(String text) {
//让textString指向在堆中新产生的对象
textString = text.replace('j', 'i');
System.out.println(textString);
}
public static void bufferReplace(StringBuffer text) {
text = text.append("C");
}
public static void main(String args[]) {
textString = new String("java");
StringBuffer textBuffer = new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString + textBuffer);
}
}
输出结果:
iava
iavajavaC
上面这个全局的效果等价于:
package com.cdl.mix;
/**
*@source:http://www.iteye.com/topic/142364#422534
*
*@function:
*
* @author ocaicai@yeah.net 2011-6-29
*
*/
public class testStringStringBuffer {
//static String textString = null;// 将textString定义为全局变量
// public static void stringReplace(String text) {
// //让textString指向在堆中新产生的对象
// textString = text.replace('j', 'i');
// System.out.println(textString);
// }
public static void bufferReplace(StringBuffer text) {
text = text.append("C");
}
public static void main(String args[]) {
String textString = new String("java");
StringBuffer textBuffer = new StringBuffer("java");
//stringReplace(textString);
textString=textString.replace('j', 'i');
System.out.println(textString);
bufferReplace(textBuffer);
System.out.println(textString + textBuffer);
}
}
输出结果:
iava
iavajavaC
区别就是一句话:
String引用改变指向一个新的地址,
StringBuffer引用不变指向自己本身
分享到:
相关推荐
在学习Java的过程中,许多初学者可能会忽略一些关键的细节,这些细节往往会在后续的编程实践中带来困扰。以下是我从我的读书笔记中整理出的一些容易被忽视的Java学习知识点。 1. **基本概念理解**:Java是一种面向...
StringBuilder和StringBuffer是可变的,适合在多线程环境中进行字符串操作。 3. **集合框架**:包括List、Set、Map三大接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。集合框架提供了存储和操作对象...
4. **字符串处理**:`java.lang.String`和`java.lang.StringBuilder/StringBuffer`是处理文本数据的关键类。 5. **日期时间**:`java.time`包在Java 8引入,提供了更强大、更易用的时间日期处理功能。 6. **反射机制...
13.3.1 弥补String不足的StringBuffer类 253 13.3.2 编写方法链以及StringBuffer类的重要方法 255 13.4 StringBuilder类 258 13.5 正则表达式 259 13.5.1 正则表达式的基本语法 259 13.5.2 Pattern类简介...