交换问题

交换问题

我的理解:这个方法的作用就是让两个变量的值交换

定义完两个变量  然后调用方法,把变量传入方法,那么目的就是让两个变量的值交换

但是调用完之后输出的两个变量没有交换  是为什么 有点没理解

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-10-13 16:38:26

同学你好,这是因为main方法和swap方法中的变量都是局部变量,而局部变量的有效范围是从其声明的位置开始,到期所在的代码块结束。也就是说,swap方法中的变量a和b有效范围是在第5行到第10行之间,而main方法是不在这个范围的。

所以就会出现,在swap方法中确实将a和b的值进行了互换,但是这个互换的效果没有传达给main方法,所以在main方法中是看不到互换的。

祝学习愉快~

  • 提问者 比奇堡派大新 #1

    那如果 我设置了返回值    那么main方法中的变量调用方法后输出 是不是就会改变了  还是也不变


    2023-10-13 16:49:49
  • 同学你好,正常情况下,需要同时满足:

    1.设置返回值

    2.在main方法中接收返回值

    3.用返回值覆盖原有变量

    同时满足上述三点的时候,确实可以看到变化。但是返回值只能返回一个数值,而例题中是两个变量,以现在的知识是无法同时返回两个变量的值的。

    如下代码同学可以自行测试一下:

    package com.imooc.test;
    
    public class Test {
    	public static void main(String[] args) {
    		Test test = new Test();
    		int a = 2;
    		//调用没有返回值的方法时,a的值没有改变
    		test.change1(a);
    		//调用有返回值的方法,并且覆盖原变量,a的值发生改变
    		a = test.change2(a);
        }
    	
    	public void change1(int a) {
    		a = a + 1;
    	}
    	
    	public int change2(int a) {
    		a = a + 1;
    		return a;
    	}
    }

    祝学习愉快~

    2023-10-13 17:07:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师