当前位置: 代码迷 >> Eclipse >> 关于变量传递的有关问题,解决后立即结贴
  详细解决方案

关于变量传递的有关问题,解决后立即结贴

热度:102   发布时间:2016-04-23 18:47:59.0
关于变量传递的问题,解决后立即结贴。
有如下代码:
      public   static   void   TestAStr(String   aa,int   bb)
      {
              aa   =   aa   +   "getName ";      
              bb   =   bb   +   1;
      }
      public   static   void   main(String[]   args)
      {
      String   NewTest   =   "yczyk ";  
      int   bb   =   1;
      TestAStr(NewTest,bb);
                        System.out.println(NewTest);
      }
本意是想通过TestAStr修改由main传过的变量的值,再返回给main函数。结果,输出的NewTest的值还是yczyk,没有加上getname,请问java中的变量传递是怎么传的?

------解决方案--------------------
修改值这样模式的话,

建议用
NewTest = TestAStr(NewTest,bb);

然后用
static String TestAStr(String aa,int bb)
{
aa = aa + "getName ";
bb = bb + 1;
trturn aa;
}
------解决方案--------------------
aa = aa + "getName "; 这一句之后,aa指向了另一个对象,已经不在是原来的对象了,即你改变的不是原对象.使用StringBuffer可以改变原对象
package qujianfeng;

public class GaiBianZhi {
public static void bian(StringBuffer str){
str=str.append( "bb ");//改变的还是原对象

}
public static void main(String[] args) {
StringBuffer str=new StringBuffer( "aa ");
bian(str);
System.out.println(str);
}
}
结果为:aabb
------解决方案--------------------
public class test01 {

public static void TestAStr(String[] aa,int[] bb)
{
//aa = aa + "getName ";
aa[0] = aa[0] + "getName ";
bb[0] = bb[0] + 1;
//bb = bb +1;
}
public static void main(String[] args)
{
String[] NewTest = new String[]{ "yczyk "};
//String NewTest = "yczyk ";
int[] bb = new int[]{1};
//int bb = 1;
TestAStr(NewTest,bb);
System.out.println(NewTest[0]);
System.out.println( "bb = "+bb[0]);
}
}
可以用这种方法解决,原因建议看一下Think in java.
------解决方案--------------------
让TestAStr方法返回一个字符串就可以了
------解决方案--------------------
我说的应该是JAVA中最基本的传递参数的方法,楼主如果以这种方式来用JAVA还不如这样写:
public static void main(String[] args)
{
String NewTest = "yczyk ";
int bb = 1;
NewTest = NewTest + "getName ";
bb = bb + 1;
System.out.println(NewTest);
System.out.println(bb);
}
但这没意义!
楼上也说了,你这种调用参数的方式只会引用main中初始化的参数,因为你静态方法执行的结果没有任何方式来传递
  相关解决方案