首页 > 编程 > Java > 正文

值传递和引用传递,java到底按什么传递的

2019-11-11 03:05:48
字体:
来源:转载
供稿:网友

众说纷纭 https://www.zhihu.com/question/31203609 讲的挺不错的,为了防止以后找不到,还是自己记一下

基本类型,按值传递,传递的是值的拷贝,与原值没有关系,

引用类型传递的是引用地址,传递的是地址,与原值有关系 String 比较特殊,属于没有改变自身方法的引用类型,+或者+=等操作,不会改变原值

第一个例子:基本类型void foo(int value) { value = 100;}foo(num); // num 没有被改变第二个例子:没有提供改变自身方法的引用类型void foo(String text) { text = "windows";}foo(str); // str 也没有被改变第三个例子:提供了改变自身方法的引用类型StringBuilder sb = new StringBuilder("iphone");void foo(StringBuilder builder) { builder.append("4");}foo(sb); // sb 被改变了,变成了"iphone4"。第四个例子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。StringBuilder sb = new StringBuilder("iphone");void foo(StringBuilder builder) { builder = new StringBuilder("ipad");}foo(sb); // sb 没有被改变,还是 "iphone"。第五个例子 :引用类型 int[] c = {1,2}; int[] d = c; d[1] = 5; System.out.PRintln("c[1]"+c[1]);//c[1]被改变
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表