看下下面的代码:
为什么参数传到方法中,我改变了它的引用值。出来后为什么还是原来引用的结果。请问在方法中如何改变参数的值(不用return,因为如果需要改变很多的参数的值得话,肯定不能用return了)。
package com.yidao;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Test {
public static void main(String[] args) throws Exception {
String test = "1222";
test(test);
System.out.println(test);
}
private static void test(String test)
{
test = "test";
}
}运行结果:1222
为什么参数传到方法中,我改变了它的引用值。出来后为什么还是原来引用的结果。请问在方法中如何改变参数的值(不用return,因为如果需要改变很多的参数的值得话,肯定不能用return了)。
package com.yidao;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Test {
public static void main(String[] args) throws Exception {
String test = "1222";
test(test);
System.out.println(test);
}
private static void test(String test)
{
test = "test";
}
}运行结果:1222
解决方案 »
- 火龙果大侠:求教一正则表达式
- 狂散分,终于想通了,只学JAVA。不学C++,只精通JAVA就可以,JAVA是我生命意义所在。半个小时后结。
- java字符与字节的问题(算分给热心的朋友)
- 想求输入10个数求平均值,最小值,最大值`!编出的代码。发现不能输入数字
- 按钮监听事件-如何按下按钮弹出来一个自制图片
- ServerSocket处于Accept()阻塞状态,如何写代码结束这种状态?
- 请帮我看下这个在Canvas上画线时,老运行不了,抛出NullPointerException
- 关于java操作oracle中blob类型数据的问题(高分请教,解决有分)
- 一个小程序,搞不定,请大家帮忙!!!
- [十分诡异的JAVA题]关于Load方法问题
- 非外部类引用事件监听
- 怎么用java写一个网页游戏的外挂,比如开心农场
String test = "1222";
做为Test类的变量试试。
package com.trisun.mail;public class TestParam { private static String strParam;
public static void main(String[] args) {
strParam = "12222";
test(strParam);
System.out.println(strParam);
}
private static void test(String test)
{
strParam ="test";
} public static String getStrParam() {
return strParam;
} public static void setStrParam(String strParam) {
TestParam.strParam = strParam;
}
}
String a1(相当于方法参数的那个a)=a;//在方法调用的时候,把"实参"->就是main方法中的test变量传给"形参"->也就是方法中的那个参数test,在方法使用的test是一样新的变量,如果我让这个变量引用新的对象,那么它肯定不会改变main方法中的test变量的引用,因为它们是不同的变量String a= new String("aaa");
String b=a;//到这里它们是引用同一个对象的
然后是 b = new String("cccc");//这是让b引用其它的对象了,但它并不改变a的引用,相当于方法中的那句代码.
这个是值传递
public class Test {
public static void main(String[] args) throws Exception {
StringBuffer test = new StringBuffer("1222");
test(test);
System.out.println(test);
}
private static void test(StringBuffer test)
{
test.append("add tttt");
}
}
我把String 改为StringBuffer 这样就是引用传递了
public class Test3{
public static void main(String[] args){
TestParam tp=new TestParam();
tp.setTest("a");
System.out.println(tp.getTest());
}
}
class TestParam{
private String test;
public TestParam(){}
public TestParam(String test){
this.setTest(test);
}
public String getTest(){
return test;
}
public void setTest(String test){
this.test=test;
}
}
只是在字符串池里边再放一个字符而已 而没有改变main中局部变量的test的地址public static void main(String[] args) throws Exception {
StringBuffer test = new StringBuffer("1222");
aaa(test);
System.out.println(test);
}
private static void aaa(StringBuffer test)
{
test.delete(0,test.length());
test.append("test");
}
代码已经测试了(7楼)
如果大家還不太明白的。
請參考:http://zhidao.baidu.com/question/68777881.html