关于 java.lang.String 的 所谓的 实际上不是的 值传递

ChongQingJin28 2014-07-08 10:01:19
http://bbs.csdn.net/topics/390820518

总有人说String是值传递 会拷贝堆中的内存

到底是不是这样呢 其实可以试验一下(希望有人告诉我结果)


import java.util.Scanner;

public class java {

public static int i = 0;
public static Scanner sc = new Scanner(System.in);
public static byte[] buffer = new byte[1024*1024*50]; // 50兆的字符串 你猜他会递归多少次呢?
public static String arg = new String(buffer);

public static void digui(String arg) {
int j = ++i;
System.out.println("这个是第 N 次递归了"+j);
sc.next();
digui(arg);
System.out.println("这个是第 N 次递归完成了 "+j);
}

public static void main(String[] args) {
digui(arg);
}
}
...全文
279 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘与我无缘 2014-07-08
  • 打赏
  • 举报
回复
顶楼上的……
vnvlyp 2014-07-08
  • 打赏
  • 举报
回复
Java函数调用,永远是传值。但String是一个引用类型,所以String变量的值不是字符串的内容,而是这个字符串的地址。 所以你传一个String到别的函数,实际给的是String的地址。
luotitan 2014-07-08
  • 打赏
  • 举报
回复
cpu占用率25%
ChongQingJin28 2014-07-08
  • 打赏
  • 举报
回复
至少 他 不会 因为 内存 而 退 出
huoxu 2014-07-08
  • 打赏
  • 举报
回复
这是死循环的节奏么
ChongQingJin28 2014-07-08
  • 打赏
  • 举报
回复
谢谢各位的答案 luotitan 应该是运行了那段代码 vnvlyp 对Frame的解释我现在还记着呢 rumlee 在39楼做回复 还告诉了我 magi1201 还带着勋章呢 我想到了一个词 :差 距
姜小白- 2014-07-08
  • 打赏
  • 举报
回复
引用 8 楼 rumlee 的回复:
不能说不可变对象传递的就是值吧。只能说传进去虽然是对象的引用,但是值依然无法改变而已,效果与传值是一样的。 4楼这样说没有问题,可以认为传递的是引用的值。但是我觉得这样说法对于java新手来说很容易误会。
恩 你讲的更严谨一些。 我现在更倾向于说java传递的是引用,引用值是否可变就分情况讨论了。 单单说java值传递或者引用传递感觉太纠结了,新人太容易被绕进去,当然我也被绕进去好长一段时间。
rumlee 2014-07-08
  • 打赏
  • 举报
回复
引用 7 楼 magi1201 的回复:
4楼解释是对的,new 出的String 是对象,本应传递引用,但String 是不可变对象,所以在其值创建后,无法对其值做修改,所以跟值传递一个效果。 顺便说一下,8个基础类型对应的包装类型全部都是不可变对象,都是值传递。
不能说不可变对象传递的就是值吧。只能说传进去虽然是对象的引用,但是值依然无法改变而已,效果与传值是一样的。 4楼这样说没有问题,可以认为传递的是引用的值。但是我觉得这样说法对于java新手来说很容易误会。
姜小白- 2014-07-08
  • 打赏
  • 举报
回复
4楼解释是对的,new 出的String 是对象,本应传递引用,但String 是不可变对象,所以在其值创建后,无法对其值做修改,所以跟值传递一个效果。 顺便说一下,8个基础类型对应的包装类型全部都是不可变对象,都是值传递。
rumlee 2014-07-08
  • 打赏
  • 举报
回复
String对象只能引用传递。 你这里的递归调用的时候,传递的肯定也只会是引用。 你提到的帖子与是值传递还是引用传递并没有关系,我在39楼做了回复,你可以看看。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧