详情请看:Java到底是值传递还是引用传递
Java中只有值传递,没有引用传递。值传递和引用传递的根本区别是有没有变量的拷贝,或者说有没有变量的副本。
1 值
啥叫值?值就是内存中真实存在的数据,就像碗里装的饭,盆里装的水一样。
2 引用
啥叫引用?引用就是装值
这块内存区域的地址,在碗上贴个标签写上张三,下次我要找张三的碗我直接看标签就行了,这个标签就是引用。(假设所有的碗颜色形状大小都一样)
3 指针
啥叫指针?指针就是这块内存我不装数据了,装的是另外一块内存的地址,我在一个小碗里面装个标签,上面写着张三,通过这个小碗我找到了张三的大碗,你没看错,通过碗找碗,小碗找大碗,通过一小块内存找到一大块内存,就是指针。
4 值传递
啥叫值传递?把这块内存中的数据拷贝到另外一块内存里面去,把张三碗里面的饭原封不动的复制到另外一个碗里面去,另外一个碗拿着这碗饭开始消费数据,消费这碗饭里面的数据对张三碗里面的饭有影响吗?并没有,这就叫值传递。
5 引用传递
啥叫引用传递?内存地址的传递叫作用传递,操作的都是同一块内存区域,我要吃饭(消费数据),把张三的碗上的标签给了我,那我自然找到张三的碗开始吃,这就叫引用传递。
6 指针传递
啥叫指针传递?指针传递本质也是值传递!有个有张三标签的小碗,这个是个指针对不,现在把这个小碗里面的标签原封不动的复制到另外一个小碗里面去,那么两个小碗都能通过张三这个标签找到张三的碗,这是同一个碗嘛,这就叫指针传递。