下面的式子Class cs=Class.forName("java.lang.String");
Class cs1=new String("").getClass();书上说cs和cs1是相等的?一个类的Class对象在内存中只能有一个吗?

解决方案 »

  1.   

    Class.forName 表示加载一个类,在 JVM 中一个类只会被加载一次,类加载器中有同步处理避免多线程竞争。像Class a = String.class;
    Class b = Class.forName("java.lang.String");
    Class c = "".getClass();这三个全部是相等的,即 a == b == c;
      

  2.   

    对,在内存只有一个!你可以观察生成的CLASS文件!
      

  3.   

    好像还应该把ClassLoader考虑进去,JVM在判断一个类有没有被加载是按classloader+全限定名判断的。
      

  4.   

    没错,楼上说的都对,一般就记着有一个class文件在内存只有一份就可以了
      

  5.   

    Class是描述类的对象,相当于类的模板,创建类的时候,从模板复制一份。二模板只需要一份就行了。
      

  6.   

    肯定是一样的呀,是String对象对应的String类,肯定就只有一个
      

  7.   

    这个涉及到类模板方面的问题,还有,拜托下现在的人,这种基础问题自己google解决,不要什么都问,有点技术含量好不好