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

yczyk 2007-03-07 03:53:24
有如下代码:
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中的变量传递是怎么传的?
...全文
351 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandit001 2007-03-12
  • 打赏
  • 举报
回复
我说的应该是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中初始化的参数,因为你静态方法执行的结果没有任何方式来传递
Tony7777777 2007-03-12
  • 打赏
  • 举报
回复
楼主觉得还行的话,给点分鼓励鼓励吧,呵呵。
Tony7777777 2007-03-09
  • 打赏
  • 举报
回复
楼上的别忘了,人家只想用参数传递值,你说的都不符合客户需求。
yczyk 2007-03-09
  • 打赏
  • 举报
回复
Tony7777777(习习)的方法不错,只是麻烦了点!谢谢解答。
yczyk 2007-03-08
  • 打赏
  • 举报
回复
这只是对String类型有效,如果是整型怎么办?数值型呢?
bandit001 2007-03-08
  • 打赏
  • 举报
回复
或者写一个类,返回一个对象,然后取出结果打印
bandit001 2007-03-08
  • 打赏
  • 举报
回复
让TestAStr方法返回一个字符串就可以了
Tony7777777 2007-03-08
  • 打赏
  • 举报
回复
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.
jianfengqu 2007-03-07
  • 打赏
  • 举报
回复
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
yczyk 2007-03-07
  • 打赏
  • 举报
回复
不会吧,Java里没有变量传递的说法吗?Delphi里就简单了,
public TestAStr(var String aa,var int bb)这样就可以了,用var表示是变量传递,子函数修改了传递过来的变量,也就修改了调用函数的相应变量的值。
wenchaohu213 2007-03-07
  • 打赏
  • 举报
回复
修改值这样模式的话,

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

然后用
static String TestAStr(String aa,int bb)
{
aa = aa + "getName";
bb = bb + 1;
trturn aa;
}
yczyk 2007-03-07
  • 打赏
  • 举报
回复
楼上的,你告诉我一个可以改变值的办法啊!不用static也行啊!
wenchaohu213 2007-03-07
  • 打赏
  • 举报
回复
static
静态方法需要修改调用方法,其实你执行TestAStr(NewTest,bb);也没有修改你的NewTest 的值,TestAStr(NewTest,bb);是执行了,但是NewTest 依然是原来的,如此做法值不变。

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧