想用一个方法改变主涵数的变量值,小程序如下,但是却改变不了,是怎么回事?帮帮忙!!
public class help
{
public static void change(Object a,Object b)
{
Object c;
c=a;
a=b;
b=c;
}
public static void main(String[] args)
{
int a=1,b=20;
change(a,b);
System.out.println("a="+a+",,b="+b);
}}
打印出来的结果还是a=1,b=20,怎么写change()这个方法,让主函数中a=20,b=1?
public class help
{
public static void change(Object a,Object b)
{
Object c;
c=a;
a=b;
b=c;
}
public static void main(String[] args)
{
int a=1,b=20;
change(a,b);
System.out.println("a="+a+",,b="+b);
}}
打印出来的结果还是a=1,b=20,怎么写change()这个方法,让主函数中a=20,b=1?
int a=1,b=20;Object A = new Integer(a);//自动装箱
Object B = new Integer(b);//自动装箱
Object c;
c=A;
A=B;
B=c;可见并没有更改a和b的值,你只是调换了A和B而已
你这个a b 是局部变量吧
变换以后没返回来
我也是新手
说的可能不对
我改了一下就可以了
把交换后的值放到数组里返回来了public class text
{
public static int[] change(int a,int b)
{
int c;
c=a;
a=b;
b=c;
int [] d={a,b};
return d;
}
public static void main(String[] args)
{
int a=1,b=20;
int d[]=change(a,b);
a=d[0];
b=d[1];
System.out.println("a="+a+",,b="+b);
}}
int b = 6;a = a ^ b;
b = a ^ b;
a = a ^ b;2.利用加减法:a = a + b;
b = a - b;
a = a - b;
字符类型的交换(利用字符串函数):a=a+b;
b=a.substring(0,a.length-b.length);
a=a.sbstring(b.length);
你用Integer就能得到你想要的效果了。
2> 引用数据类型: 是引用的拷贝;而你的 int 数据类型则是属于第一种,它只对副本进行操作,不改变原来的值
{
public static void change(Object a,Object b)
{
Object c;
c=a;
a=b;
b=c;
System.out.println("a="+a+",,b="+b);
}
public static void main(String[] args)
{
int a=1,b=20;
change(a,b);
}}
这个好象是传值调用,并没有改变它本身的值,
{
public static int[] change(int a,int b)
{
int c;
c=a;
a=b;
b=c;
int [] d={a,b};
return d;
}
public static void main(String[] args)
{
int a=1,b=20;
int d[]=change(a,b);
a=d[0];
b=d[1];
System.out.println("a="+a+",,b="+b);
}}
{
int c;
c=a;
a=b;
b=c;
System.out.println("a="+a+",b="+b);
}
public static void main(String[] args)
{
int a=1,b=20;
change(a,b);
}这样不就可以了吗?
class help
{
public static void change(int [] a,int [] b)
{
int [] c=new int[1];
c[0]=a[0];
a[0]=b[0];
b[0]=c[0];
}
public static void main(String[] args)
{
int a[]=new int[1];
int b[]=new int[1];
a[0]=1;
b[0]=20;
change(a,b);
System.out.println("a="+a[0]+",,b="+b[0]);
}}
class help
{
int a;
int b;
public static void change(help h)
{
help c=new help();
c.a=h.b;
h.b=h.a;
h.a=c.a;
}
public static void main(String[] args)
{
help a1=new help();
help a2=new help();
a1.a=1;
a1.b=20;
change(a1);
System.out.println("a="+a1.a+",b="+a1.b);
}}
这回你错了
在JAVA中,没有传引用的概念。那是C的做法