日期:2014-05-18  浏览次数:20744 次

java 实例化深层求教!
本人新手刚接触java不久!求大神赐教。。
1.
  java 虚拟机加载类后会对类的局部变量进行初始化!
  是不是就是说
  class hello{
    public String a = "hello";
  }
  其实变量a此时已经有了字符串"hello"的地址!
2. 
  以下为猜测 希望大神指点下
  如果1 中说的正确
  那么就是说 其实 类和实例都差不多
  在内存中他们都有各自的空间,并都初始化过

  不同之处在于实例是经过构造函数修改过后的类
3.
  如果2 正确
  是不是类在实例化时!
  首先是给出一个类的副本,
  然后运行构造函数修改此副本
  结果就是最后的实例

java??实例化?

------解决方案--------------------
1.错。只有静态变量才会在类加载的时候分配地址,你的类实际上是存储在jvm字节码内存中。只有对象被实例化之后,属性才会分配地址。
2,3就不用回答了吧
------解决方案--------------------
1.这个时候a和hello都作为一些静态字符串保存在.class文件里。或者已经被读到内存中
2.有各自的空间是对的,至于实例化,只有你new(包括各种……)它的时候,才会发生。将这个class的定义读入虚拟机的过程可以认为是load,而生成一个实例的时候才是initiate,一般第一次new这个class或者调用这个class的静态方法,会触发load。
3.没有副本一说