码迷,mamicode.com
首页 > 编程语言 > 详细

关于java中基础数据类型传值和引用类型传值的总结

时间:2020-03-06 13:24:39      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:blog   oid   传值   int   array   存储   区别   方法   wap   

先看一组代码:

public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int[] array = {1,2};
        swap(a, b);
        System.out.println(a + " " + b);
        swap(array, 0, 1);
        System.out.println(array[0] + " " + array[1]);
    }
    public static void swap(int x,int y){
        int z = x;
        x = y;
        y = z;
    }
    public static void swap(int[] array,int x,int y){
        int xx = array[x];
        int yy = array[y];
        array[x] = yy;
        array[y] = xx;
    }

最后结果分别是1,2(基础数据类型传值);2,1(引用数据类型传值)

基础数据类型传值和引用数据类型传值的区别

基本变量类型:

在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的

引用变量类型:

只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址

! 地址的区别

在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的

也就是说

public static void swap(int x,int y)

这里的x和y实际上是新开创的地址,然后将外部的a和b的数值复制而成的。
因此在方法内部对x和y的任何操作都不会对外部的a和b造成影响

引用数据类型变量,调用方法时作为参数是按引用传递的

public static void swap(int[] array,int x,int y)

我们可以看到,这里传进去的x和y,是array数组的下标。
也就是说,所谓引用传递,就是说传进方法内的是外部a和b两个数所在的地址
因此,在方法内部,是对计算机底层对应地址中的数进行操作,由于外部的数实际上就是对应地址中的值,所以外部的数也就被改变了。

关于java中基础数据类型传值和引用类型传值的总结

标签:blog   oid   传值   int   array   存储   区别   方法   wap   

原文地址:https://www.cnblogs.com/Water2Wine/p/12425747.html

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