发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 3 下一页 Go 3

一道JAVA 考试题 请高手指点

    
2005-02-02 15:20
赞助商链接

在amay的scjp试题中有这样一道题目:

Click the exhibit button:
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.println (textString + textBuffer);
18. }
19. }
What is the output

答案是javajavaC,我不清楚为什么textString的内容没有改变而textBuffer的内容改变了,我是菜鸟弄不明白阿

请高手指点谢谢了

2005-02-02 17:23

faint,我也不懂,与静态方法有关系?期盼有高手就这一方面做一解答

2005-02-02 17:30

String 是创建了就不会改变了,可以理解成一个常量。
虽然你是用replace去改变了,但他本身并没改变,除非你定义另一个String去接受结果,而开始的那个String是不会有任何变化的
而StringBuffer却是可以变的。

2005-02-02 18:55

这样理解吧:
基本类型的变量在传递时不会改变自身的值,比如:int,double,String
对象类型的变量在传递时会改变自身的值,比如:StringBuffer、Integer

不知道这样口语化的说法是否有证明力?

2005-02-02 20:15

text = text.append (“C”)
这样理解
StringBuffer temp = text.append("C");//1
text = temp;//2

这个地方 1改变了实参的值
而2对形参的引用修改不会修改temp指向的内存区域值

3Go 1 2 3 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com