Java中值传递和引用传递

来源:互联网 发布:网上购物系统源码 编辑:程序博客网 时间:2024/05/17 17:39

Java中值传递和引用传递

Java中参数的传递是值传递,而不是引用传递。


对于基本数据类型和String字符串类型(按照String s="hello"这种形式定义的字符串),在作为参数被传递的时候,传递的是类型对应的值的拷贝,也就是说,不是对原来的值进行操作,例如int a=1;在经过add(int a){a++}这个方法之后,a的值还是1。这里要注意,这两个a是不相同的,两个a对应的是两个存储单元,只不过将第一个a的存储单元的值复制给了第二个a的存储单元,方法中操作的是第二个a对应的存储单元中的值,所以,无论怎么操作,第一个a对应的存储单元的值始终是1。


对于Java中的引用数据类型,在作为参数被传递的时候,传递进来的是引用对应的地址的值的拷贝。例如Person p = new Person(); 经过add(Person p){p.age++}这个方法之后,发现p对象的age确实加了1。跟上面基本数据类型不同的是,这里传递的并不是引用p对应的对象的拷贝,而是引用p对应的地址的拷贝,上面两句代码的两个p是不同的,只不过两个p都拥有相同的地址,因为在传递的时候,是将第一个p的地址值的拷贝传递给了第二个p,所以第二个p跟第一个p对应的是同一个内存中的对象,多以操作第二个p的时候,会真实的操作该对象,对象自然发生了变化。

0 0
原创粉丝点击