美文网首页
Java--java方法中对象的传值传参问题

Java--java方法中对象的传值传参问题

作者: 微博云玩家 | 来源:发表于2019-02-26 14:04 被阅读0次

    对于java中引用类型的传递一直不太清楚,专门写一下防止忘记。

    首先新建了一个TestPass的类,里面只有一个整型的成员变量a,而且是用public修饰的。

    其他啥都没写,简单纯粹。

    OK,然后在Main类里面写了一个静态的changePass方法如下:

    这个方法就是新建一个对象testPass1,这个对象中的a赋值为5,然后将新建的对象赋给传进来的testPass,然后在main函数中如此操作:

    新建一个TestPass的对象testPass,a赋值为3,然后调用changePass方法,输出调用之后testPass的a的值为:

    然后我们队changePass的方法稍加修改:

    main函数不变,输出的结果就变成了5。

    所以分析下来java方法中变量的传递是值的传递,即将变量复制了一份传到方法中去。

    我们再来看看对象在java虚拟机中的存储情况,以Hotspot虚拟机为例,采用的是直接引用法:

    这里的reference就是引用类型,类似于C中的指针,在这里就是表示为testPass变量

    那么在当前这个例子中的体现就是这样:

    将testPass的引用复制了一份传给了changePass,这个副本同样指向堆中的testPass对象,本文中第一版的changePass是对testPass引用的副本进行操作,对引用的原本和对象不产生印象。第二版的changePass是对引用指向的对象的操作,所以testPass原版指向的对象中的a的值也会改变。

    综上,java方法中采用的是传值方式,传递的方式是传值,传递的是对象的引用。

    相关文章

      网友评论

          本文标题:Java--java方法中对象的传值传参问题

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