黑马程序员技术交流社区
标题:
我有一个基础小问题 来帮下忙阿~~
[打印本页]
作者:
a337136395
时间:
2016-1-21 14:02
标题:
我有一个基础小问题 来帮下忙阿~~
public static void main(String[] args) {
int x = 10;
method(x);
int[] arr = {1,2,3};
method(arr);
System.out.print(x+arr[0]);
}
public static void method(int y) {
y=5;
}
public static void method(int[] arr) {
arr[0] = 5;
}
我自己编译了试了一下 ,结果为15,为什么是15呢???那两个方法不是没有返回值吗
作者:
chenzhou
时间:
2016-1-21 23:32
在堆里改变了他的值,但是下次调用的还是被改变的值
作者:
847374032
时间:
2016-1-22 00:05
调用的作用域里的值在main函数里有使用,导致内存空间无法释放
作者:
怪我咯~
时间:
2016-1-23 20:21
涉及到了基本数据了类型和引用数据类型参数传递问题 建议你看一下毕老师的基础视频 在面向对象(第六天内容)里面老师通过画图讲的很清楚
作者:
bulesky
时间:
2016-1-28 19:08
这要说道static关键字,,,被static修饰的变量和方法存储在方法区的静态区,随着类的加载而加载,,所以arr[0] = 5已经
作者:
bulesky
时间:
2016-1-28 19:10
所以,arr[0]=5已经把之前的值覆盖了
作者:
洋葱头头
时间:
2016-1-29 19:27
楼主不好意思,因为在董校长那个贴中,校长设置错了黑马币分享方式,已致你获得了1000黑马币。
黑马入学需要25技术分,我们非常希望大家公平的竞争。通过自己的努力得到黑马币技术分。所以,现在已经按照规定扣掉1000黑马币,对此我们非常抱歉
希望你能理解。
作者:
洋葱头头
时间:
2016-1-29 19:30
如有任何疑问,可以私密我,谢谢
作者:
小轩丶卍
时间:
2016-1-30 20:45
我就说怎么突然看到120技术分了,惊呆了。。
作者:
rushing
时间:
2016-1-31 20:23
那是因为数组跟局部变量存储的地方不一样。第一个修改,方法调用完就弹栈了,第二个修改直接体现在数组当中了。所以结果为15.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2