黑马程序员技术交流社区

标题: 关于地址调用和值调用的问题!求赐教。 [打印本页]

作者: winkyqin    时间: 2014-10-19 14:25
标题: 关于地址调用和值调用的问题!求赐教。
虽然百度上有很多的引用调用和值调用的详细解释。但是个人的理解总是感觉懵懵懂懂。之前面试的时候遇到过考值调用和引用调用。看着函数里的嵌套,我就是觉得方法本身执行完,变量本身也就是变了的啊。
但是实际编写代码之后,答案却又不是自己想象当中的。求赐教!
        private void addTest(int a){
                a += a;
                System.out.println("addTest方法中的a="+a);
        }
        public static void main(String[] args) {
                TestDemo01 t = new TestDemo01();
                int a = 1;
                t.addTest(a)
                System.out.println("main方法执行中的a="+a);
        }
        输出结果是:addTest方法中的a=2

                             main方法执行中的a=1(为什么这里的main方法执行后输出结果不是2呢?我就觉着这也应该是2的!)





作者: (づ ̄_3 ̄)づ    时间: 2014-10-19 14:32
基本类型是以值传递的,相当于是吧值复制一份到方法里运算,对原来的变量没有影响。引用类型的变量传递的是地址,在方法中改变了变量的值,其实改变的是那个地址所指向的堆内存中的值。
作者: nyk    时间: 2014-10-19 14:36
Java的方法中不管是基本类型值,还是引用类型值,都是值传递
作者: winkyqin    时间: 2014-10-19 15:10
(づ ̄_3 ̄)づ 发表于 2014-10-19 14:32
基本类型是以值传递的,相当于是吧值复制一份到方法里运算,对原来的变量没有影响。引用类型的变量传递的是 ...

我能理解说就是没有改变这个值,但是看到方法时 ,我就觉得函数进行了操作,变量增加了。
作者: 杨佳名    时间: 2014-10-19 15:15
winkyqin 发表于 2014-10-19 15:10
我能理解说就是没有改变这个值,但是看到方法时 ,我就觉得函数进行了操作,变量增加了。 ...

http://bbs.itheima.com/thread-145139-1-1.html初学时我也糊涂
作者: winkyqin    时间: 2014-10-19 17:05
杨佳名 发表于 2014-10-19 15:15
http://bbs.itheima.com/thread-145139-1-1.html初学时我也糊涂

好像有那么点开窍了,;P




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2