public class passingDemo{
public void fist(){
xObject o=new xObject();
o.x=5;
int x=5;
changeThem(x,o);
System.out.println();
System.out.println("Back in the original method");
System.out.println("The value of o.x is " + o.x);
System.out.println("But.The value of x is now " + x);
}
public void changeThem(int x,xObject o){
x=9;
o.x=9;
System.out.println("In the changThem method");
System.out.println("The value of o.x is " + o.x);
System.out.println("The value of x is now " + x);
}
public static void main(String args[]){
passingDemo myDemo=new passingDemo();
myDemo.fist();
}
class xObject{
public int x=5;
}
}
输出结果
In the changThem method
The value of o.x is 9
The value of x is now 9
Back in the original method
The value of o.x is 9
But.The value of x is now 5
为什么输出顺序是从changeThem开始的。为什么first方法里的o.x变成9了
还有值传递和引用传递是怎么进行的。满意加分
关于JAVA引用传递和值传递的题
答案:1 悬赏:80 手机版
解决时间 2021-02-20 17:22
- 提问者网友:别再叽里呱啦
- 2021-02-19 18:21
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-02-19 19:19
1. 简单类型是按值传递的
Java 方法的参数是简单类型的时候,是按值传递的 (pass by value)。这一点我们可以通过一个简单的例子来说明:
public class Test {
public static void test(boolean test) {
test = ! test;
System.out.println("In test(boolean) : test = " + test);
}
public static void main(String[] args) {
boolean test = true;
System.out.println("Before test(boolean) : test = " + test);
test(test);
System.out.println("After test(boolean) : test = " + test);
}
}
运行结果:
Before test(boolean) : test = true
In test(boolean) : test = false
After test(boolean) : test = true
不难看出,虽然在 test(boolean) 方法中改变了传进来的参数的值,但对这个参数源变量本身并没有影响,即对 main(String[]) 方法里的 test 变量没有影响。那说明,参数类型是简单类型的时候,是按值传递的。以参数形式传递简单类型的变量时,实际上是将参数的值作了一个拷贝传进方法函数的,那么在方法函数里再怎么改变其值,其结果都是只改变了拷贝的值,而不是源值。
详细的看www.javababy.cn
Java 方法的参数是简单类型的时候,是按值传递的 (pass by value)。这一点我们可以通过一个简单的例子来说明:
public class Test {
public static void test(boolean test) {
test = ! test;
System.out.println("In test(boolean) : test = " + test);
}
public static void main(String[] args) {
boolean test = true;
System.out.println("Before test(boolean) : test = " + test);
test(test);
System.out.println("After test(boolean) : test = " + test);
}
}
运行结果:
Before test(boolean) : test = true
In test(boolean) : test = false
After test(boolean) : test = true
不难看出,虽然在 test(boolean) 方法中改变了传进来的参数的值,但对这个参数源变量本身并没有影响,即对 main(String[]) 方法里的 test 变量没有影响。那说明,参数类型是简单类型的时候,是按值传递的。以参数形式传递简单类型的变量时,实际上是将参数的值作了一个拷贝传进方法函数的,那么在方法函数里再怎么改变其值,其结果都是只改变了拷贝的值,而不是源值。
详细的看www.javababy.cn
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯