1. Public class test (
2. Public static void stringReplace (String text) (
3. Text = text.replace (‘j’ , ‘i’);
4. )
5.
6. public static void bufferReplace (StringBuffer text) (
7. text = text.append (“C”)
8. )
9.
10. public static void main (String args[]} (
11. String textString = new String (“java”);
12. StringBuffer textBuffer = new StringBuffer (“java”);
13.
14. stringReplace (textString);
15. BufferReplace (textBuffer);
16.
17. System.out.printIn (textString + textBuffer);
18. }
19. )
最后的结果是javajavac,在11行,定义了一个普通的字符串,而12行定义的是一个缓冲字符串,普通的字符串在本身是不可改变的,除非重新赋值,所以在执行到StringReplace后,返回还是java这个字符串。而缓冲字符串和普通字符串的区别在于,它是可以对于本身进行操作,所有的操作执行后都在自身的基础上做改变,所以,在执行BufferReplace后,字符串即变成了javac。:)
2. Public static void stringReplace (String text) (
3. Text = text.replace (‘j’ , ‘i’);
4. )
5.
6. public static void bufferReplace (StringBuffer text) (
7. text = text.append (“C”)
8. )
9.
10. public static void main (String args[]} (
11. String textString = new String (“java”);
12. StringBuffer textBuffer = new StringBuffer (“java”);
13.
14. stringReplace (textString);
15. BufferReplace (textBuffer);
16.
17. System.out.printIn (textString + textBuffer);
18. }
19. )
最后的结果是javajavac,在11行,定义了一个普通的字符串,而12行定义的是一个缓冲字符串,普通的字符串在本身是不可改变的,除非重新赋值,所以在执行到StringReplace后,返回还是java这个字符串。而缓冲字符串和普通字符串的区别在于,它是可以对于本身进行操作,所有的操作执行后都在自身的基础上做改变,所以,在执行BufferReplace后,字符串即变成了javac。:)
Public static void stringReplace (String text) {
Text = text.replace (‘j’ , ‘i’);
system.out.println(Text);//加上这句,你就会发现Text的值变成了iava 而输出却是javajavac.搞不懂!
}
==================================================================注意:此人因发表爱国言论,被斑竹hexiao*扣除6分信誉分,问你死未?!
stringReplace ()方法内部Text 的值是iava可以理解。
Text和textString两个变量没有任何关系。所以System.out.printIn (textString + textBuffer);这一句中textString是什么还是什么,never changed!
在stringReplace (textString);中传递过去的只是textString句柄的一个副本而已,方法stringReplace只是对这个副本操作,对textString本身是没有操作的。==================================================================注意:此人因发表爱国言论,被斑竹hexiao*扣除6分信誉分,问你死未?!
所以结果 javajavaC
11. String textString = new String (“java”);
12. StringBuffer textBuffer = new StringBuffer (“java”);
13.
14. stringReplace (textString);
15. BufferReplace (textBuffer);
16.
17. System.out.printIn (textString + textBuffer);
18. }
19. )
如果我们把上述代码中的14行改为:textString=stringReplace(textString);//给字符串重新赋值
然后再把
2. Public static void stringReplace (String text) (
3. Text = text.replace (‘j’ , ‘i’);
4. )
改成
2. Public static String stringReplace (String text) (
3. Text = text.replace (‘j’ , ‘i’);
return Text; //将text的值返回到主方法4. )
的话,那么就是iavajava!因为在stringReplace中的text是一个形参,且不返回重新赋给主方法中的textString,所以,主方法中的textString值不变!
2. public static void add3 (Integer i) }
3. int val = i.intValue ( );
4. val += 3;
5. i = new Integer (val);
6. }
7.
8. public static void main (String args [ ] ) {
9. Integer i = new Integer (0);
10. add3 (i);
11. system.out.printIn (i.intValue ( ) );
12. }
13. )What is the result?A. Compilation will fail.
B. The program prints “0”.
C. The program prints “3”.
D. Compilation will succeed but an exception will be thrown at line 3.
在侃侃这道!
可以这样说吧在:
在stringReplace (textString);中传递过去的只是textString句柄的一个副本而已,方法stringReplace只是对这个副本操作,对textString本身是没有操作的。
跟String没有区别
==================================================================注意:此人因发表爱国言论,被斑竹hexiao*扣除6分信誉分?!