java 交换值
publicclassChanger{publicstaticdoublex,y;publicstaticvoidmain(String[]args){x=3.0;y=4...
public class Changer
{
public static double x,y;
public static void main(String[] args)
{
x = 3.0;
y = 4.0;
falseSwap(x,y);
System.out.print(x+" "+y);
}
public static void falseSwap(double a, double b)
{
x=b;
y=a;
}
}
这个可以实现
/*************************************************************/
public class StringTest
{
static int x;
static int y;
public static void change(int x,int y)
{
x = x + y;
y = x - y;
x = x - y;
}
public static void main(String[] args)
{
x=3;
y=4;
change(x,y);
System.out.println("x="+x);
System.out.println("y="+y);
}
}为什么不行呢 展开
{
public static double x,y;
public static void main(String[] args)
{
x = 3.0;
y = 4.0;
falseSwap(x,y);
System.out.print(x+" "+y);
}
public static void falseSwap(double a, double b)
{
x=b;
y=a;
}
}
这个可以实现
/*************************************************************/
public class StringTest
{
static int x;
static int y;
public static void change(int x,int y)
{
x = x + y;
y = x - y;
x = x - y;
}
public static void main(String[] args)
{
x=3;
y=4;
change(x,y);
System.out.println("x="+x);
System.out.println("y="+y);
}
}为什么不行呢 展开
4个回答
展开全部
1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
因此在change方法中交换x,y是成功的,但是不会影响到static x ,y的值,在change方法中输出是可以得到交换成功的x,y,因为它们都是基本类型。可以通过一个int[]的返回值来得到交换后的数值。
简单点说
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
因此在change方法中交换x,y是成功的,但是不会影响到static x ,y的值,在change方法中输出是可以得到交换成功的x,y,因为它们都是基本类型。可以通过一个int[]的返回值来得到交换后的数值。
简单点说
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
展开全部
借助中间量交换
int x = 10;
int y = 20;
int temp = x;
x = y;
y = temp;数值相加减交换
int x = 10;
int y = 20;
x = x + y;
y = x - y;
x = x - y;位移运算交换
int x = 10;
int y = 20;
x = x ^ y;
y = x ^ y;
x = x ^ y;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去理解一下调用函数时的参数传递方式:
值传递 和 引用传递 的区别你就会明白了
值传递 和 引用传递 的区别你就会明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个我就不用说为什么能实现了吧,只说第二个吧
在第二个public static void main(String[] args) main方法里 你定义了x=3,y=4.然后把这两个值当做参数调用了 change(x,y)方法 这个方法的作用只是形参交换数值 ,但对实参没有任何影响。不知道你发现这一点没有 你定义的这两个静态变量 static int x; static int y; 与change(x,y)方法里的x和y根本不是一回事,是两个不同的性质。public static void change(int x,int y)
{
x = x + y;
y = x - y;
x = x - y;
}
这个方法体里的x,y 只是形参
在第二个public static void main(String[] args) main方法里 你定义了x=3,y=4.然后把这两个值当做参数调用了 change(x,y)方法 这个方法的作用只是形参交换数值 ,但对实参没有任何影响。不知道你发现这一点没有 你定义的这两个静态变量 static int x; static int y; 与change(x,y)方法里的x和y根本不是一回事,是两个不同的性质。public static void change(int x,int y)
{
x = x + y;
y = x - y;
x = x - y;
}
这个方法体里的x,y 只是形参
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询