概述
关于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
最后
以上就是专一画板为你收集整理的Java传参练习的全部内容,希望文章能够帮你解决Java传参练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复