为什么我的java交换函数不起作用?
我试图在java中创建一个交换函数,但为什么它不起作用呢为什么我的java交换函数不起作用?,java,swap,Java,Swap,我试图在java中创建一个交换函数,但为什么它不起作用呢 void swap(int a, int b) { int temp = a; a = b; b = temp; } 因为java是通过引用传递的,而不是通过引用传递的。您的交换方法不会更改实际的a和b。实际上,您已经交换了a和b,它们仅在方法内部有生命。只需在swap方法中打印a和b即可检查 您可以在数组的帮助下返回交换的值。(首先由添加) 您的swap只将值的副本获取到a和b中,因此您只交换swap范围内a和b变量
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
因为java是通过引用传递的,而不是通过引用传递的。您的交换方法不会更改实际的a
和b
。实际上,您已经交换了a
和b
,它们仅在方法内部有生命。只需在swap
方法中打印a
和b
即可检查
您可以在数组的帮助下返回交换的值。(首先由添加)
您的
swap
只将值的副本获取到a
和b
中,因此您只交换swap
范围内a
和b
变量中的值
public class HelloWorld {
private int a, b;
HelloWorld(){
this.a=0;
this.b=0;
}
HelloWorld(int a, int b){
this.a=a;
this.b=b;
}
void swap() {
int temp = this.a;
this.a = this.b;
this.b = temp;
}
public static void main(String[] args) {
HelloWorld obj = new HelloWorld(10,5);
obj.swap();
System.out.println("a="+obj.a);
System.out.println("b="+obj.b);
}
}
若您使用的是局部变量,那个么作用域将在swap()方法中。但如果您将其用作实例变量,此示例将有所帮助。实例变量的范围将在整个类中可用。
有关范围,您可以查看
若你们想使用局部变量,那个么任务给出的答案将更有帮助。根据您的要求。在我写作时,您给出了一个很好的答案。将我的解决方案添加到您的答案中。请随意回顾和还原:)可能值得注意的是,java是按值传递的,但是对于对象,它在许多方面表现得好像是按引用传递的,因为对象实际上是对象指针。真的吗??这个答案怎么会比任务的答案更简洁呢?你的代码让OP哭了:DHint:你不能编写一个在Java中工作的交换(带有这个签名)。
public class HelloWorld {
private int a, b;
HelloWorld(){
this.a=0;
this.b=0;
}
HelloWorld(int a, int b){
this.a=a;
this.b=b;
}
void swap() {
int temp = this.a;
this.a = this.b;
this.b = temp;
}
public static void main(String[] args) {
HelloWorld obj = new HelloWorld(10,5);
obj.swap();
System.out.println("a="+obj.a);
System.out.println("b="+obj.b);
}
}