"java语言中只有值传递,没有引用传递"的理解
Posted xy辉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了"java语言中只有值传递,没有引用传递"的理解相关的知识,希望对你有一定的参考价值。
创建一个类Human
public class Human { private int age; private int sex;//0-女,1-男 public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } }
测试类
class HumanTest { @Test void test() { Human human=new Human(); int age=human.getAge(); addage(age); System.out.println(age); man(human); System.out.println(human.getAge()); assert human.getSex()==1; } void man(Human human) { human.setAge(20); human.setSex(1); } void addage(int age) { age+=2; } }
输出结果
0 20
(1).值传递:传递的是值的拷贝。也就是说传递后就不互相关了。
堆和栈的区别:
(1).栈:栈存放的是基本数据类型(基本数据类型包括:int、short、double、long、float、boolean、char、byte;注意没有String)以及对象的引用。
(2).堆:堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
当传递参数为对象时,传递的是对象的引用,存在于栈中,而对象的属性存在于堆中,修改属性值,对象的引用不变,
所以本质还是值传递;
以上是关于"java语言中只有值传递,没有引用传递"的理解的主要内容,如果未能解决你的问题,请参考以下文章