如何将字符串传递给java中的方法(在内存方面)

时间:2016-01-01 17:37:56

标签: java stack heap

当我们调用方法时,如果传入基本类型,则在调用方法时将该值放在堆栈帧上。如果你传入一个引用类型,如果它不是null,你就已经在堆上创建了一些地方,并且放在堆栈上的内容是对它的引用。

但是当我做

这样的事情时,堆栈会发生什么
person.setName("Jack");

它首先在堆上创建一个字符串对象,然后在堆栈上引用它吗?

1 个答案:

答案 0 :(得分:3)

鉴于您的代码,"Jack"是一个String 常量,因此它位于run-time constant pool中。该池驻留在JVM的一个区域中,称为方法区域。

但是,如果代码更改为:

Person.SetName(new String("Jack"));

然后传递的引用指向堆上的对象,就像通常用于任何引用类型一样。