键盘手C
2016-04-19 07:29JAVA中函数的参数值的传递问题
在学习java中,遇到这样一个问题
class PasasVale{
public static void main(String [] args){
int x = 5;
change(x);
System.out.println(x);
public static void public change(int y){
y =3;
}
}
}
输出结果为5;
还有一个例子
class PasasVale{
public static void main(String [] args){
PassVale obj = PassVale();
obj.x = 5;
change(obj);
System.out.println(x);
public static void public chang(obj){
obj. y =3;
}
}
}
输出结果为3
也就是说结果被更改了
在分析里是这样说的,第一个例子,刚开始,main中的值为5,然后change中的值未定,然后传值,两个都为5,然后在change中修改了值为3,然后原来main中的值还是5,所以输出来为5
第二个例子,是引用了堆和栈的概念,说原来在栈中main中obj中存一个地址,然后指向堆内存中的5,这时,change值未定,然后又传值,这时change中却传的是地址,也指向了堆中的这个5,然后修改,然后就变了
我不明白的是为什么第一个例子里没有这麽做。第二个却在堆栈中操作了,难道两个例子的修改值不在一个层面上吗,求解答,谢谢
- 点赞
- 回答
- 收藏
- 复制链接分享
4条回答
为你推荐
- 安卓数据库创建问题.....
- java
- android
- eclipse
- 1个回答
- recycview中添加底部按钮问题。
- java
- android-studio
- android
- xml
- 1个回答
- java方法内调用方法,参数传递对象是否线程安全
- java
- 多线程
- 0个回答
- jsp中页面代码如何与用<% %>嵌入的JAVA代码通信?
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
- C++通过jni向java层传递自定义结构体参数
- native
- java
- jni
- c++
- 3个回答