当我们调用方法时,如果传入的是原始类型,则在调用方法时,该值将被放在堆栈框架中。如果传递的是引用类型,则如果它不为null,那么您已经在堆上创建了该引用类型,并将其放置在堆栈中的某些位置和内容是对该引用的引用。
但是当我做类似的事情时,堆栈上会发生什么
person.setName("Jack");
它是否首先在堆上创建一个字符串对象,然后在堆栈上放置对该对象的引用?
给定您的代码,它"Jack"
是一个String常量,因此它位于运行时常量池中。该池位于JVM的一个称为“方法区域”的区域中。
但是,如果代码更改为:
Person.SetName(new String("Jack"));
然后,传递的引用将指向堆上的对象,就像任何引用类型通常使用的那样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句