又一个关于JAVA的问题,还是基本性质的题目,爱好者们进来研究研究 传参数时 类能被改变,但变量不行类 StringBuffer ,Integer,Boolean,Vector,Double等变量 int ,boolean, String,float ,double等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那么为什么如果s.append("C");s=new StringBuffer("temp");这样回到函数外面后仍然是 JavaC 呢?而且,如果第二句在第一句前面,那么append也没有起作用了 请注意这里参数传过去时是传地址 S是在这个地址上作了append()所以改变了值 而对M中的S2的操作是赋值,这是就会使这个S不再指向原来的S,重新开了一个内存空间,值为JavaC 。但原来的S没有影响。 public static void Hello(StringBuffer s, String c) StringBuffer 参数是对象用的是“引用”(也就是是指针),所以他会变化。而String c 是基本的数据类型,函数就copy了,不会改变数据的值。 那是因为s.append("C")改变了s所引用的对象而s=new StringBuffer("temp")只是让s指向了一个新对象,并不改变s原来引用的对象 s.append("C");s=new StringBuffer("temp");s = new StringBuffer("temp") 新建立了一个对象,改变了s的值(指向另外一个对象了)。但是对函数外面的对象却没有影响。 哦,原来是这样,那么那些Stack也是同样道理啦?明白了! 请注意这里参数传过去时是传地址 S是在这个地址上作了append()所以改变了值 而对S的操作是赋值,这是就会使这个S不再指向原来的S,重新开了一个内存空间,但原来的S没有影响。 原来的S值为JavaC 。 J2EE和android怎么选择? 再次来这里求教,关于对话框输入数据,主窗口表格实时更新问题 【求助】如何在服务器端判断客户端关闭 关于设置布局管理器为NULL后的问题 问个String的问题,大家帮我解答一下 新手求助 java使用相对路径操作文件的问题?谢谢!!! DecimalFormat有精度限制么? 初学者的简单问题, JBuilder6个人版的注册号谁知道?急用!!! java 基础:什么是Listener? 为什么在jbuilder里的jdbc explorer里连接数据库之后,什么都看不到呀!
s.append("C");
s=new StringBuffer("temp");
这样回到函数外面后仍然是 JavaC 呢?
而且,如果第二句在第一句前面,那么append也没有起作用了
S是在这个地址上作了append()所以改变了值
而对M中的S2的操作是赋值,这是就会使这个S不再指向原来的S,重新开了一个内存空间,值为JavaC 。但原来的S没有影响。
而s=new StringBuffer("temp")只是让s指向了一个新对象,并不改变s原来引用的对象
s=new StringBuffer("temp");s = new StringBuffer("temp") 新建立了一个对象,改变了s的值(指向另外一个对象了)。但是对函数外面的对象却没有影响。
明白了!