码迷,mamicode.com
首页 > 其他好文 > 详细

值传递和引用传递

时间:2017-12-13 23:45:44      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:而不是   基本   数据   stat   函数   asi   str   因此   接口   

1、java中的数组类型:

  基本类型:byte short int float long double char boolean

  引用类型:类类型,接口类型,数组类型。

  基本类型的变量保存原始值,它代表的是数值本身,

  引用类型的变量保存引用值,“引用值”指向内存空间地址,代表某个对象的引用,而不是对象本身,引用值指向栈中存放的地址,而对象在堆中。

2、基本类型和引用类型的区别

  基本数据类型在声明时系统就给它分配空间,这里面包括数据空间,引用类型不同,声明时只给变量分配引用空间,不分配数据空间。

3、引用传递和值传递

  值传递:

  方法调用时,实际参数的值传给方法的形参,形参收到的只是实参的一个副本,实际参数的值没有变化,在方法中对形参的改变不影响实参的值。

  引用传递:

  也称为传地址。方法调用时,实际参数的地址传给形参,因此形参指向的对象和实参指向的对象相同,因此方法中对形参的改变会影响实参的值。

  例子:

  

public class Object {
    public int b = 99;
}

分别传参基本数据类型和引用数据类型

public class BasicAndObject {
    public void test1(int a){
        a=a++;
        System.out.println("test1方法中的:"+a);
    }
    public void test2(Object obj){
        obj.b = 100;
        System.out.println("test2方法中的:"+obj.b );
    }
    public static void main(String[] args) {
        BasicAndObject ba = new BasicAndObject();
        int a = 99;
        ba.test1(a);
        System.out.println("main函数中的"+a);
        
        Object o = new Object();
        ba.test2(o);
        System.out.println("main函数中的"+o.b);
    }
}

结果:

test1方法中的:99
main函数中的99
test2方法中的:100
main函数中的100

 

从结果中,值传递没有改变原来实参的值,但是引用传递改变了原来对象的值。

  

值传递和引用传递

标签:而不是   基本   数据   stat   函数   asi   str   因此   接口   

原文地址:http://www.cnblogs.com/qducn/p/8034554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!