java代码解析

[复制链接]
查看11 | 回复5 | 2016-8-19 17:50:04 | 显示全部楼层 |阅读模式
一楼的说的够全面了,不过稍有误解.再来表示抱歉,我对编程语言中的中文名词非常不了解,所以如果以下的回复对你的阅读或者理解造成困难,请见谅.1.首先,要明白这个问题的答案,需要了解call (pass) by value 和 call (pass) by reference 的区别.简单来说:call by value通常是复制这个parameter的值去另外一块内存里,然后传给function, 所以在method/function里边对这个变量的所有变更,实际上都是对复制过来的镜像进行操作,不会对原本的va...
回复

使用道具 举报

千问 | 2016-8-19 17:50:04 | 显示全部楼层
图发不上来,请看参考资料连接初学的话只要了解值传递不会改变,引用传递会改变。至于原理,有兴趣的话可以了解一下。下面讲得很详细讲解:按值传参与按引用传参----------------------------------------------------------------------------类中包含方法,方法又分为方...
回复

使用道具 举报

千问 | 2016-8-19 17:50:04 | 显示全部楼层
- -很简单,我把main复制下来一步步解析public static void main(String[] args) {int a = 1;//在这里a就是1了update(a);/*在这里运行了update(int)方法,我们可能会认为会修改掉a,实际上并没有修改掉a因为java是按值传递的,所以update修改的实际上是形...
回复

使用道具 举报

千问 | 2016-8-19 17:50:04 | 显示全部楼层
用通俗易懂的方式给你解释解释!参数传递有两种方式:1、传值2、传地址java中,对于简单类型(不是对象类型)是传值;而对于对象类型则是传地址。对于传值操作,例如int a = 1; java会自动复制一个备份变量,他的值与a的值是完全相同的。 update(a);方法之后,其实这个方法中操作的是哪个备份的变量里面的值,而不是a中的值,所以...
回复

使用道具 举报

千问 | 2016-8-19 17:50:04 | 显示全部楼层
第一次调用updata()函数时你传递的参数a就相当于1,a的值并没有变,在这时函数static void update(int a) {a++; }就相当于static void update(int b) {b++; }所以你显示的是1。当你用对象作为参数ko时,语句“ko.a”实际上引用的是a的地址,它就好像是一个实...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行