首页 > 代码库 > 值传递与引用传递
值传递与引用传递
摘抄自威哥视频
例一:值传递(说白了,就是内容复制,或者说内容的副本)
public class ValueDemo{ public static void main(String[] args){ int x = 10; method(x); System.out.println("x="+x); } public static void method(int mx){ mx = 20; }}
例二:下面三个都是引用传递
package sunjava;public class RefDemo2{ public static void main(String[] args){ String name = "小白"; method(name); System.out.println("name="+name); } public static void method(String sname){ sname = "小红"; }}
name=小白
例三:引用传递(说白了,就是地址传递,指向了同一个地址。栈内寸两个变量存储的是同一个地址。)
package sunjava;public class RefDemo1{ public static void main(String[] args){ Cat c = new Cat(); method(c); System.out.println("Cat age = "+c.age); } public static void method(Cat cat){ cat.age = 5; }}class Cat{ int age = 2;//省略封装}
5
例四:字符串特例
package sunjava;public class RefDemo3{ public static void main(String[] args){ Cat c = new Cat(); method(c) ; System.out.println("Cat name= "+c.name) ; } public static void method(Cat cat){ cat.name = "小黑"; }}class Cat{ String name = "小白"; //省略封装}
Cat name= 小黑
总结:
1、每次new一个对象,就是在堆内存当中开辟一个新的空间。【无论以前是否有重复,如string1=new String(“helloworld”),如例五的string2和string4是false】
2、例四的 String name = "小白"; 字符串也是一个新的对象。
值传递与引用传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。