如果修改方法参数所指向的值 例如:public void test1(String arg1){ //如何才能修改arg1这个引用所指向的值呢?想了半天不得解啊} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么意思?能具体点吗?你是说 test1(p);public void test1(String p1) { p1 = ...}然后你想修改什么呢? 刚刚还有人问这个问题来着。。http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html你看我在四楼的回复就明白了 http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html 这个不同于c,c里面传值修改是没有用的,但java里面因为是一份资源的两个引用,所以任何一个修改都可以改掉这同一份资源。但是引用本身互相之间不能产生作用,因为它们甚至都不知道对方的存在。 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所指向的 值? 如果把String类型,换成其他的对象类型是可以的比如 arg对象可以通过访问自己的方法,来改变自己对象中的字段 那是不可能的,因为对于方法内部来说,它根本不需要知道有那样一个引用arg存在,它只知道传进来的这个引用。如果一定要改,那么只有把arg作为类变量,那么你在哪里改都可以 public void test1(Demo arg){arg.setValue(99);// 这样就改变arg这个对象中的值了}class Demo {int i = 0;public void setValue(int value){this.i = value;}排版比较乱, 直接在论坛上敲的, 不知道是否是lz想要的效果 哎 关键还就是String类型不是基本类型也不是自定义类型悲愤 糊涂了, 改变引用本身 不大明白这个意思如果是改变 arg的引用的话直接 arg = new Demo(); 就好了啊 呵呵 String对象貌似是不能更改的啊 记得有个字符串池的概念啊 敢问这样做的深层次原因么 要改的话,用StringBuffer咯,不然人家为什么要提供这个StringBuffer 强制运行,结果正确,却提示一个错误(线程问题) 用JAVA写一个查寻的程序 JLabel问题 请教一个if的小问题。 多线程的简单问题 系统间通过窗口传值 的问题,请高手相助 我是JAVA白痴,中间件是什么东西啊?谁可以介绍一下,通俗一点更好。高分相送 菜鸟问题:jdbTable怎样设置滚动条呀? 请问在java应用程序中,如何处理报表问题?(报表同样要求跨平台) 最近想钱想疯了,有谁知道有做外包软件业务交流的网站,共享一下! JButton高亮 新手学习Java关于关键字super有个不解
你是说 test1(p);public void test1(String p1) {
p1 = ...
}
然后你想修改什么呢?
刚刚还有人问这个问题来着。。http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html
你看我在四楼的回复就明白了
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所指向的 值?
如果把String类型,换成其他的对象类型是可以的
比如 arg对象可以通过访问自己的方法,来改变自己对象中的字段
那是不可能的,因为对于方法内部来说,它根本不需要知道有那样一个引用arg存在,它只知道传进来的这个引用。如果一定要改,那么只有把arg作为类变量,那么你在哪里改都可以
arg.setValue(99);// 这样就改变arg这个对象中的值了
}class Demo {
int i = 0;
public void setValue(int value){
this.i = value;
}排版比较乱, 直接在论坛上敲的, 不知道是否是lz想要的效果
不是基本类型也不是自定义类型悲愤
糊涂了, 改变引用本身 不大明白这个意思
如果是改变 arg的引用的话
直接 arg = new Demo(); 就好了啊
记得有个字符串池的概念啊 敢问这样做的深层次原因么