美文网首页
JAVA值传递与引用传递

JAVA值传递与引用传递

作者: 谈谈理想_ttlx | 来源:发表于2019-08-06 15:26 被阅读0次

    回顾一下数据类型

    JAVA的数据类型分为基本类型和引用类型两种。

    基本类型包含 byte short int long char double boolean

    引用类型包括类,接口,数组等。包装类型属于引用类型肯定都知道了,需要注意的是,String属于引用类型

    基本类型是分配在栈里的,而引用类型是分配在堆里的,内存中存的是引用类型对象的引用地址。

    值传递与引用传递

    引用类型传递时会改变对象指向,将对象指向新的内存地址。而基本类型改变时则是直接修改该内存地址的值。

    这个需要结合着JAVA内存模型来理解,后续再补充一篇内存模型的,这里贴一段代码帮助理解。

    public class RefTest {
    
        public static void main(String[] args) {
            int a = 5;
            Integer b = 6;
            test(a, b);
        }
    
        static void test(int a, Integer b) {
            //创建对象 ta
            int ta = a;
            //修改栈中a的值为7,内存地址不变
            a = a + 2;
            //将ta的值也修改为7
            ta = a;
            //将栈中ta的值修改为8
            ta = ta + 1;
            //创建tb对象,tb和b拿到的引用是同一个
            Integer tb = b;
            //b指向新的引用,b此时的值为14
            b = b + ta;
            //再次将tb指向b的引用,tb的值此时修改为14
            tb = b;
            System.out.println(a);
            System.out.println(b);
            System.out.println(ta);
            System.out.println(tb);
    
        }
    }
    

    相关文章

      网友评论

          本文标题:JAVA值传递与引用传递

          本文链接:https://www.haomeiwen.com/subject/gafwdctx.html