值传递&&引用传递

java值传递和引用传递

java中的值分为两大类:值类型和引用类型
值类型:就是基本数据类型
引用类型:除了基本变量类型之外的所有类型

所有的类型在内存中都会分配一定的存储空间(注:形参在使用的时候也会分配一定的内存储空间,方法调用完毕后空间也自动消失)

基本的数据类型只有一块存储空间(分配在stack中)
引用数据类型有两块存储空间(一块在stack中,一块在heap中)

下面上图:
made in chuangye

基本数据类型是按值传递
/**
 * Created by yan on 2019/1/21.
 */
public class Demo {
    public static void main(String[] args) {
        int a = 10;
        demo1(a);
        System.out.println(a+"主函数中输出的结果");
    }

    public static void demo1(int a){
        a = 100;
        System.out.println(a+"demo1方法中输出的结果");
    }

    public static void demo2(int arr[]){

    }
}

在这里插入图片描述
由此可见主函数中的int a = 10(实参);并没有对demo(a)产生影响,方法体内对形式参数的操作不会影响实际参数的值

引用数据类型是按引用传递
/**
 * Created by yan on 2019/1/21.
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = new int[1];//默认arr[0] = 0
        System.out.println(arr[0]+"主函数中调用demo2方法前输出的");
        demo2(arr);
        System.out.println(arr[0]+"主函数中调用demo2方法后输出的");
    }



    public static void demo2(int arr[]){
        arr[0] = 100;
        System.out.println(arr[0]+"demo2方法中输出的结果");
    }
}

在这里插入图片描述
是不是和前面的基本数据类型值传递有很大的区别
引用数据类型是引用传递,在方法内对形式参数的操作也会影响实际参数的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值