public class Ball {
public String color="红";
public String getColor() {
return color;
}
}
假如实例化上面这个类只需要为color属性开辟一个内存空间,那么下面这个类需要开辟空间吗??
public class Ball {
public String getColor() {
return "红";
}
}

解决方案 »

  1.   

    第一个,如果字符串池中没有"红",则会将"红"放入字符串池,并让color指向"红",否则直接将color指向"红",该过程在实例化时发生。
    第二个,过程与第一个类似,只是在调用getColor()发生,因而实例化时不会开辟空间
      

  2.   

    说实在的,我感觉去研究这些几乎没有什么意义,除非你自己想去实现一个 JVM。否则的话就算是知道了,也是啥都不能做的。
      

  3.   


    第一个,如果字符串池中没有"红",则会将"红"放入字符串池,并让color指向"红",否则直接将color指向"红",该过程在实例化时发生。
    第二个,过程与第一个类似,只是在调用getColor()发生,因而实例化时不会开辟空间
      

  4.   


    对的。初学者不要去研究JVM细节。当有一天你对java的大部分东西都比较熟练的时候,再去研究底层比较好。
      

  5.   

    String的具体值只放入池,对象的方法不放入堆中,堆里只放属性,所有同一类的对象共用代码段