java 里有没有类似于 c 里面的引用参数(reference parameters)
如下程序:
class Test
{
public static void main(String[] args)
{
int x = 3;
int y = 4;
mySwap(x,y);
System.out.println(x);
System.out.println(y);
}
static void mySwap(int x,int y)
{
int iTmp = x;
x = y;
y = iTmp;
}
}
怎么样在mySwap方法中改变变量x、y的值,在c里可以通过mySwap(int &x,int &y)来实现,java里有没有类似的方法?
问题点数:20、回复次数:8Top
1 楼alphazhao(迷路飞羊)回复于 2002-05-13 14:32:46 得分 5
你可以在class Test里面将x和y定义为静态的就行
如下:
public class Test{
public static int x = 3;
public static int y = 4;
public static void main(String[] args)
{
mySwap();
System.out.println(x);
System.out.println(y);
}
static void mySwap()
{
int i=Test.x;
Test.x=Test.y;
Test.y=i;
}
}
Top
2 楼alphazhao(迷路飞羊)回复于 2002-05-13 14:34:20 得分 0
否则改变行参是没有用的Top
3 楼nielinjie(学当活雷锋ing)回复于 2002-05-13 14:43:25 得分 0
楼上说的是特殊情况吧,很多时候是不能这样声明di,楼主的问题又不一定是在static里……Top
4 楼Koham(永恒)回复于 2002-05-13 14:45:30 得分 2
呵呵呵,用数组吧,用数组它是参数传递。
个人意见,仅供参考。Top
5 楼nielinjie(学当活雷锋ing)回复于 2002-05-13 14:45:31 得分 2
试试使用Integer对象来当参数。Top
6 楼dylanwolf()回复于 2002-05-13 14:48:38 得分 2
只能通过对象, java里的都是 pass by value。Top
7 楼Koham(永恒)回复于 2002-05-13 14:49:35 得分 2
用数组吧,不是很困难的。
个人意见,仅供参考。Top
8 楼nielinjie(学当活雷锋ing)回复于 2002-05-13 14:54:44 得分 2
用Integer类,只能。Top
9 楼promark()回复于 2002-05-13 15:13:02 得分 5
还是建一个类把
class swap{
int x,y;
swap(int x,int y){
this.x=x;
this.y=y;
}
int getx(){return y;}
int gety(){return x;}
}
这样所有的int交换都可以了,使用就不用说了吧
建议:
1。学习java,要用对象的思维考虑问题
2。软件要考虑通用
以上仅供参考
Top
10 楼PrettyWish(苏杭)回复于 2002-05-13 16:34:39 得分 0
我并不是想知道怎么实现两个数的交换,我是想知道java里有没有这种reference parameters 的用法,上次看了C#的一个例子,使关于C#里参数的类型的:
class A
{
public static int x;
int y;
void F(int[] v,int a,ref int b,out int c)
{
int i = 1;
c = a + b++;
}
}
上面的变量声明中,x是静态变量,y是非静态变量,v[0]是数组元素,a是值参数,b是引用参数,c是输出参数,i是局部变量。
所以我想知道java里有没有引用参数和输出参数的概念。
Top




