public class Test {
public static String stringReplace(String text) {
// String 的replace(..)方法不改变原有的对象,只会生成一个新的String 对象.
// 也就是说String 这个字符串对象一经创建是不会被改变的
text = text.replace('j', 'i');
// 这里的text指向了对象"iava",但是main()方法中的textString是没有变的
System.out.println("the test is :" + text);
return text;
}
// StringBuffer
public static void bufferReplace(StringBuffer text) {
// StringBuffer与String 不同的是,它的方法是针对原有的对象的基础上的
text = text.append("C");
}
// 这个方法用来测试try{}finally{} 和return 的顺序,i=1, j=2
private static int add(int i, int j) {
try {
System.out.println("haha1");
// return i = i + 5;
// 在try语句块中先调用return 然后调用finally,返回值为6
// finally的输出为"in finally i = 7"
} finally {
i++;
System.out.println("in finally i = " + i);
// 如果在finally语句中也有return,则try语句中的return值会被替换,返回值为7,不过这种写法应该是要避免的
return i ;
}
return i + 10;
// 在try语句块外先调用finally,后调用return; 返回12
// finally输出为"in finally i = 2"
}
public static void main(String args[]) {
// 测试try{}finally{} return
int m = add(1, 2);
System.out.println("m = " + m);// m = 6
// 比较String 与StringBuffer
String textString = new String("java");
StringBuffer textBuffer = new StringBuffer("java");
String afterString = stringReplace(textString);
bufferReplace(textBuffer);
System.out.println("after String replace:" + afterString);
// "after String replace:iava"
System.out.println("the original String :" + textString);
// "the original String :java"
System.out.println("the StringBuffer affter append :" + textBuffer);
// "the StringBuffer affter append :javaC"
}
}
本文探讨了Java中String与StringBuffer的区别,包括不可变性和修改行为的不同,并通过实例展示了try-finally-return语句的执行顺序。
1219

被折叠的 条评论
为什么被折叠?



