| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 880 人关注过本帖
标题:关于append()问题
只看楼主 加入收藏
亮剑
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-10-18
收藏
 问题点数:0 回复次数:9 
关于append()问题
public class Test {
public static void main(String args[]){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operator(a,b);
System.out.println(a);//输出是AB 这里为什么能输出AB呢 方法不是传过去的只是值吗 如果传的不是值那为什么下面的确输出的是B呢
System.out.println(b);//输出是B
}
public static void operator(StringBuffer x,StringBuffer y){
x.append(y);
System.out.println(x);//输出是AB
y=x;
System.out.println(y);//输出是AB
}
}
搜索更多相关主题的帖子: append StringBuffer public operator println 
2007-02-15 21:01
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
这个问题已经是老声长谈了 呵呵
new StringBuffer("A");这个对象你操作了append所以打印ab
new StringBuffer("B");这个对象你没对他做任何操作,所以他还是b

感觉说的像废话

win32汇编
病毒 加密
目前兴趣所在
2007-02-15 21:28
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

{
StringBuilder x =a;
StringBuilder y =b;
x.append(y);
System.out.println(x);//输出是AB
y=x;
System.out.println(y);//输出是AB
}

显然,执行之后:
a里面保存了"AB";
b里面保存的还是"B";
代码中的y=x根本对a,b(指这两个引用)没有影响,so...



My BlogClick Me
2007-02-15 21:46
亮剑
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-10-18
收藏
得分:0 
但是操作append的是x不是a啊
x和a有不可能指向一个对象如果指向一个对象那下面的y和b也应该是指向同一个对象为什么System.out.println(b);打印的不是AB而是B呢
2007-02-15 21:48
亮剑
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-10-18
收藏
得分:0 
以下是引用Eastsun在2007-2-15 21:46:04的发言:
只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

{
StringBuilder x =a;
StringBuilder y =b;
x.append(y);
System.out.println(x);//输出是AB
y=x;
System.out.println(y);//输出是AB
}

显然,执行之后:
a里面保存了"AB";
b里面保存的还是"B";
代码中的y=x根本对a,b(指这两个引用)没有影响,so...


x.append(y);
这个为什么会有影响呢

2007-02-15 21:50
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
唔,楼主还是好好想想吧.
或者自己写一些简单的代码验证一下自己的想法.
自己想清楚了,就再也不会有疑问了.

偶该说的已经说了,就不多说了.

My BlogClick Me
2007-02-15 21:52
Java
Rank: 1
等 级:新手上路
帖 子:718
专家分:0
注 册:2007-1-29
收藏
得分:0 
其实在JAVA里面到处都是传值,只不过传引用的时候传的是引用的复制值而已,所以你改变引用的指向并不会改变实据数据,但是你用引用去改变东西却能反应出来
这点你要自己好好体会一下

Java,My Love!
2007-02-15 21:53
lgdcky
Rank: 2
等 级:论坛游民
威 望:5
帖 子:576
专家分:18
注 册:2006-8-5
收藏
得分:0 
LZ还是把值的传递和对对象的克隆看一下吧!

2007-02-19 22:20
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
在JAVA里面是没有对象克隆的,传的都是引用的拷贝

明白了这点以后,就可以知道为什么了

可惜不是你,陪我到最后
2007-02-20 20:25
shylock424
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-1-5
收藏
得分:0 

遇到这种题目 我就头大
慢慢体会了


路遥知马力?日久见人心
2007-02-22 01:20
快速回复:关于append()问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013304 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved