当前位置: 技术问答>java相关
超级简单快来捡分
来源: 互联网 发布时间:2015-07-12
本文导语: 预交换A,B的值 public class exchange{ static Integer a =new Integer(5); static Integer b =new Integer(25); private static void ex(Integer a ,Integer b){ Integer t=a; a=b; b=t; System.out.println("a="+a+" b="+b); } public static void main(...
预交换A,B的值
public class exchange{
static Integer a =new Integer(5);
static Integer b =new Integer(25);
private static void ex(Integer a ,Integer b){
Integer t=a;
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
public static void main(String args[])
{
System.out.println("a="+a+" b="+b);
ex(a,b);
System.out.println("a="+a+" b="+b);
}
}
结果:
a=5 b=25
a=25 b=5
a=5 b=25
why?????
public class exchange{
static Integer a =new Integer(5);
static Integer b =new Integer(25);
private static void ex(Integer a ,Integer b){
Integer t=a;
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
public static void main(String args[])
{
System.out.println("a="+a+" b="+b);
ex(a,b);
System.out.println("a="+a+" b="+b);
}
}
结果:
a=5 b=25
a=25 b=5
a=5 b=25
why?????
|
private static void ex(Integer a ,Integer b){
Integer t=a;
//t是对a的引用,用c++的话说就是t是指向a的指针
a=b;
//这里a的值变了,t也就变了
b=t;
System.out.println("a="+a+" b="+b);
}
Integer t=a;
//t是对a的引用,用c++的话说就是t是指向a的指针
a=b;
//这里a的值变了,t也就变了
b=t;
System.out.println("a="+a+" b="+b);
}
|
你在ex(Integer a ,Integer b)方法中只是改变两个局部变量,并没有改变全局静态变量a,b.
改一下即可:
private static void ex(){
Integer t=a;
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
改一下即可:
private static void ex(){
Integer t=a;
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
|
在这里java传递的是值而不是地址,所以交换不起作用,
private static void ex(Integer a ,Integer b){
Integer t=a.clone();
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
是可以的
private static void ex(Integer a ,Integer b){
Integer t=a.clone();
a=b;
b=t;
System.out.println("a="+a+" b="+b);
}
是可以的
|
这种情况是典型的值传递问题,并不是引用传递,所以改变的是传递过去的值,并不能改变本身的值。可修改为如楼上的兄弟所示的那样。
|
Integer 是一个类,java在传递类形式的参数时传递的是引用,在传递primate类型的参数时传递的时指,你可以把 Integer的值付给一个int变量,再传递该变量时,所做的交换就会生效.然后在把交换后的变量转换成Integer形式.试一试,看能否可行!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。