Java传参练习

关于Java的参数传递,值传递,一直都没有动手实践过,今天来亲自动手看看:

下面是Demo程序:

public class ValueTest {

    public static void main(String args[]) {
        int a = 0;
        String str = "default string";

        System.out.println("a== " + a + ", str == " + str);
        setValue(a, str);
        System.out.println("a== " + a + ", str == " + str);
    }

    private static void setValue(int a, String str) {
        a = 1;
        str = "given string";
    } 

}

我们调用setValue()方法给a和str赋值,但是这样是不生效的。
运行结果:
a== 0, str == default string
a== 0, str == default string

改变一下Demo程序:

public class ValueTest {

    public static void main(String args[]) {
        int a = 0;
        String str = "default string";

        System.out.println("a== " + a + ", str == " + str);
        a = setValue(a, str); //有了返回值
        System.out.println("a== " + a + ", str == " + str);
    }

    private static int setValue(int a, String str) {
        a = 1;
        str = "given string";
        return a;//这里返回了a的值
    } 

}

运行结果:
a== 0, str == default string
a== 1, str == default string

可见因为返回值的原因, a重新赋值成功了,但是str重新赋值仍旧并未成功。

同样的,如果改变setValue()返回str的值,则str就可以重新赋值成功。
但是setValue()的返回值只能有一个,那么怎么才能让两个变量都改变呢?

改动如下:

public class ValueTest {
    static int a = 0;
    static String str = "default string";
    public static void main(String args[]) {

        System.out.println("a== " + a + ", str == " + str);
        setValue();
        System.out.println("a== " + a + ", str == " + str);
    }

    private static void setValue() {
        a = 1;
        str = "given string";
    } 
}

变量a和str都改为了static全局变量,setValue()也改为了无参数的void类型,这样的话,两个变量不用以参数的方式传入,我们在任意地方修改它们的值都可以生效了。

运行结果:
a== 0, str == default string
a== 1, str == given string

如果这个时候再把setValue()变为有参数,像这样;

public class ValueTest {
    static int a = 0;
    static String str = "default string";
    public static void main(String args[]) {

        System.out.println("a== " + a + ", str == " + str);
        setValue(a, str);
        System.out.println("a== " + a + ", str == " + str);
    }

    private static void setValue(int a, String str) {//传入参数
        a = 1;
        str = "given string";
    } 
}

则运行结果如下,两个变量的值不能被改变:
a== 0, str == default string
a== 0, str == default string

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值