社区
Java SE
帖子详情
如果修改方法参数所指向的值
zjwilove4
2010-03-17 03:48:21
例如:
public void test1(String arg1){
//如何才能修改arg1这个引用所指向的值呢?想了半天不得解啊。。。
}
...全文
136
21
打赏
收藏
如果修改方法参数所指向的值
例如: public void test1(String arg1){ //如何才能修改arg1这个引用所指向的值呢?想了半天不得解啊。。。 }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hjh811
2010-03-17
打赏
举报
回复
要改的话,用StringBuffer咯,不然人家为什么要提供这个StringBuffer
zjwilove4
2010-03-17
打赏
举报
回复
哎 翻阅了相关文档这个问题无法解决
谢谢大家了
j_tang
2010-03-17
打赏
举报
回复
方法形参的问题也困扰过我一段时间 :)
zjwilove4
2010-03-17
打赏
举报
回复
[Quote=引用 17 楼 j_tang 的回复:]
引用 15 楼 zjwilove4 的回复:
哎 关键还就是String类型。。。
不是基本类型也不是自定义类型
悲愤
呵呵 String对象貌似是不能更改的啊
记得有个字符串池的概念啊 敢问这样做的深层次原因么
[/Quote]
谢谢提醒 我搞搞去
j_tang
2010-03-17
打赏
举报
回复
[Quote=引用 15 楼 zjwilove4 的回复:]
哎 关键还就是String类型。。。
不是基本类型也不是自定义类型
悲愤
[/Quote]
呵呵 String对象貌似是不能更改的啊
记得有个字符串池的概念啊 敢问这样做的深层次原因么
j_tang
2010-03-17
打赏
举报
回复
[Quote=引用 14 楼 xiesisi3 的回复:]
引用 13 楼 j_tang 的回复:
public void test1(Demo arg){
arg.setValue(99);// 这样就改变arg这个对象中的值了
}
class Demo {
int i = 0;
public void setValue(int value){
this.i = value;
}
排版比较乱, 直接在论坛上敲的, 不知道是否是……
[/Quote]
糊涂了, 改变引用本身 不大明白这个意思
如果是改变 arg的引用的话
直接 arg = new Demo(); 就好了啊
zjwilove4
2010-03-17
打赏
举报
回复
哎 关键还就是String类型。。。
不是基本类型也不是自定义类型
悲愤
xiesisi3
2010-03-17
打赏
举报
回复
[Quote=引用 13 楼 j_tang 的回复:]
public void test1(Demo arg){
arg.setValue(99);// 这样就改变arg这个对象中的值了
}
class Demo {
int i = 0;
public void setValue(int value){
this.i = value;
}
排版比较乱, 直接在论坛上敲的, 不知道是否是lz想要的效果
[/Quote]
LZ是要改变引用本身,不是要改变引用指向的值
j_tang
2010-03-17
打赏
举报
回复
public void test1(Demo arg){
arg.setValue(99);// 这样就改变arg这个对象中的值了
}
class Demo {
int i = 0;
public void setValue(int value){
this.i = value;
}
排版比较乱, 直接在论坛上敲的, 不知道是否是lz想要的效果
xiesisi3
2010-03-17
打赏
举报
回复
[Quote=引用 10 楼 zjwilove4 的回复:]
public static void main(String[] args){
String arg = "0";//arg最开始指向的是 "0"这个内存地址。
new Test().test1(arg);//调用方法时把arg这个引用复制了一份传递给了方法
System.out.println(arg);//实际上还是打印的0
}
public void test1(String ar……
[/Quote]
那是不可能的,因为对于方法内部来说,它根本不需要知道有那样一个引用arg存在,它只知道传进来的这个引用。
如果一定要改,那么只有把arg作为类变量,那么你在哪里改都可以
j_tang
2010-03-17
打赏
举报
回复
[Quote=引用 10 楼 zjwilove4 的回复:]
public static void main(String[] args){
String arg = "0";//arg最开始指向的是 "0"这个内存地址。
new Test().test1(arg);//调用方法时把arg这个引用复制了一份传递给了方法
System.out.println(arg);//实际上还是打印的0
}
public void test1(String a……
[/Quote]
如果把String类型,换成其他的对象类型是可以的
比如 arg对象可以通过访问自己的方法,来改变自己对象中的字段
zjwilove4
2010-03-17
打赏
举报
回复
public static void main(String[] args){
String arg = "0";//arg最开始指向的是 "0"这个内存地址。
new Test().test1(arg);//调用方法时把arg这个引用复制了一份传递给了方法
System.out.println(arg);//实际上还是打印的0
}
public void test1(String arg){
arg = "1";在方法中arg = "1" 把这个复制的引用重新指向了 "1"这个内存地址
}
我的问题是:能不能有什么办法在方法中改变 arg所指向的 值?
xiesisi3
2010-03-17
打赏
举报
回复
这个不同于c,c里面传值修改是没有用的,但java里面因为是一份资源的两个引用,所以任何一个修改都可以改掉这同一份资源。但是引用本身互相之间不能产生作用,因为它们甚至都不知道对方的存在。
xiesisi3
2010-03-17
打赏
举报
回复
你有没有看内容?
结果是修改了好不好。。为什么会变成10,就是因为已经修改了。
zjwilove4
2010-03-17
打赏
举报
回复
这个我知道。关键是能不能修改?
xiesisi3
2010-03-17
打赏
举报
回复
http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html
xiesisi3
2010-03-17
打赏
举报
回复
。。。
刚刚还有人问这个问题来着。。
http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html
你看我在四楼的回复就明白了
zjwilove4
2010-03-17
打赏
举报
回复
说明白点就是修改p1这个引用所指向的内存地址当中的值
而不是修改p1这个引用所指向的内存地址
zjwilove4
2010-03-17
打赏
举报
回复
[Quote=引用 2 楼 xiesisi3 的回复:]
什么意思?能具体点吗?
你是说
test1(p);
public void test1(String p1) {
p1 = ...
}
[/Quote]
如果是这样修改的话 修改的是p1这个引用
我的意思是修改参数p1这个引用所指向的值
xiesisi3
2010-03-17
打赏
举报
回复
什么意思?能具体点吗?
你是说
test1(p);
public void test1(String p1) {
p1 = ...
}
然后你想修改什么呢?
加载更多回复(1)
js基础--
修改
this指针
指向
的
方法
在JavaScript里,关键字
指向
取决于函数调用方式,不同上下文
值
可能不同。文中介绍了
修改
指针
指向
的
方法
,一种
方法
可显式设置
值
,接受第一个
参数
为
值
及传递给函数的
参数
;另一种
方法
与前者类似,但接受
参数
数组而非单独
参数
列表。
python默认
参数
的
值
可以
修改
_Python缺省
值
参数
之坑
本文讲述作者编程时遇到的Python大坑,函数默认
参数
为列表对象,多次调用函数结果不同。经大神指点,明白是可变对象特性所致,即对象
值
修改
时
指向
它的变量也会改变。还给出验证
方法
和解决办法,提醒遇到此类坑要谨慎。
必踩的坑之Java
方法
中形参、实参传递
本文详细探讨了Java中
方法
参数
传递的规则,特别是关于基本类型和对象的区别。通过实例分析,解释了为什么当
参数
是数组时,尽管在
方法
内部改变了数组的
值
,但在外部并不会看到这些变化。同时,文章还提醒读者不要混淆引用地址与引用
指向
的
值
的
修改
。最后,通过一个示例展示了如何正确地改变引用
指向
的
值
。
js
修改
函数this
指向
的三种常用
方法
总结
本文详细介绍了JavaScript中
修改
函数调用时this
指向
的三种
方法
:call、apply和bind。call和apply都用于立即调用函数,并能设置this
值
,不同在于传递
参数
的方式。bind则用于创建一个新的函数,保留原函数的this
指向
,常用于事件绑定场景。了解这些技巧有助于提升JavaScript编程能力。
对java中
方法
参数
的学习
本文通过实例演示了Java中
方法
参数
的三个主要特性:
方法
无法
修改
基本类型
参数
的
值
;可以改变对象
参数
的状态;但不能使对象
参数
指向
新的对象。通过具体的代码展示了这些特性的实际效果。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章