首页 > 编程 > Java > 正文

Java传参练习

2019-11-08 02:21:34
字体:
来源:转载
供稿:网友

关于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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表