黑马程序员技术交流社区

标题: 菜鸟提问 [打印本页]

作者: eternallove    时间: 2014-4-26 09:28
标题: 菜鸟提问
本帖最后由 eternallove 于 2014-4-27 09:46 编辑

我以前学过C/C++,它们都有值传递和引用传递,那JAVA中的传递都是值传递吗?有没有引用传递呢?
作者: 二小傻    时间: 2014-4-26 10:00
java值传递与引用传递
1、对象是按引用传递的---带"="号的赋值操作
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递---由"函数调用"引起的
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本
5、注意:String虽是对象,但永远是传值
作者: eternallove    时间: 2014-4-26 12:06
二小傻 发表于 2014-4-26 10:00
java值传递与引用传递
1、对象是按引用传递的---带"="号的赋值操作
2、Java 应用程序有且仅有的一种参数传 ...

非常的Thank  You了,我明白了。。。
作者: 爱翚    时间: 2014-4-26 15:53
举例说明如下:
class Demo {
        private int num;
        Demo(int num) {
                this.num = num;
        }
        int getValue(int arg){
                return num + arg;
        }
        void setDemoValue(Demo x){
                x.num = 10;
        }
        public static void main(String[] args) {
                //创建Demo类的对象d,将num设置为4
                Demo d = new Demo(4);
               
                /*
                 * 值传递举例
                 * 向getValue方法中传入一个数值15,打印结果为20
                 */
                System.out.println(d.getValue(16));//打印结果20
                //对象d所对应的num仍然为4
                System.out.println(d.num);//打印结果4

                /*
                 * 引用传递
                 * 向setDemoValue方法中传入一个Demo类的对象引用d,
                 * 在该操作中将引用d所对应的num的数值修改为10
                 */
                d.setDemoValue(d);
                //对象d所对应的num被修改为10
                System.out.println(d.num);//打印结果10
        }
}
作者: eternallove    时间: 2014-4-26 17:06
爱翚 发表于 2014-4-26 15:53
举例说明如下:
class Demo {
        private int num;

谢谢,:):):):)
作者: 小歪    时间: 2014-4-26 17:59
基础类型是值传递,所有的对象都是引用传递。
作者: eternallove    时间: 2014-4-27 09:43
小歪 发表于 2014-4-26 17:59
基础类型是值传递,所有的对象都是引用传递。

:):):):)谢谢




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