java的内存问题
class Person
{
  String name="张三";
}
public class student
{
  public static void main(String args[])
  {
   Person str=new Person();
   str.name="李四";
   func(str);
   System.out.print(str.name);
  }
  public static void func(Person a)
  {
   a.name="王五";
  }
}
  该程序在栈内存或者是在堆内存中存储的
------解决方案-------------------- 你想问什么?
------解决方案-------------------- 你想要问的是什么 是说这个程序在栈内存存储还是在堆内存存储么?
如果是我说的这个意思    都有 因为有实例对象和应用句柄 两者存储的位置不一样。
------解决方案-------------------- 字符串是在的内存的   code segement  吧   str是在栈内存中
------解决方案-------------------- str是在栈内存中
------解决方案-------------------- 整个代码在code segment
程序运行时,对象是在堆内存中
局部变量在栈中
字符串常量,静态变量在data segment中
------解决方案-------------------- 你是不是在学汇编阿?不过汇编确实蛮重要的,这个有空也得翻翻
------解决方案-------------------- 菜鸟来回答:
class Person
{
  String name="张三";
}
public class student
{
  public static void main(String args[])
  {
 Person str=new Person();//stack 出现person的引用,heap中被new 出一个person对象,该引用指向对象  
  str.name="李四";//data 中被new 出一个 String 对象  "李四",str 中的一个name指针,指向该String对象  
  func(str);//stack 中出现形参str ,将实参str的引用copy给形参
//方法结束,stack中形参的内存被释放
//因实参str的引用copy给形参,新建立的形参对象与实参对象指向同一个内存空间,func因而可对内存中的对象进行修改
//参数传递永远是复制,但复制数值与复制引用(地址,指针)结果是【完全不同的】
 System.out.print(str.name);
  }
不懂你想问的是不是这个
别外程序代码存于 code
------解决方案-------------------- if you print the value of the str.name,the last value is "王五"!that's all!!
探讨  class Person {  String name="张三"; } public class student {  public static void main(String args[])  {   Person str=new Person();   str.name="李四";   func(str);   System.out.print(str.name); …… 
------解决方案-------------------- f923@qq.com
------解决方案-------------------- 凡是new的都在堆中
------解决方案-------------------- 下载 Java虚拟机规范(Java SE 7).pdf  看2.5,2.6,2.7章