黑马程序员技术交流社区
标题:
Class类的问题
[打印本页]
作者:
张猛
时间:
2012-2-25 21:30
标题:
Class类的问题
本帖最后由 张猛 于 2012-2-26 10:05 编辑
String s1 = "abc";
String s2 = "efg";
Class cls1 = String.class;
Class cls2 = String.class;
System.out.println(cls1 == cls2);
结果是true,难道在内存中是同一个String类型的字节码文件吗?
作者:
杨盼
时间:
2012-2-25 21:51
Class cls1 = String.class;
Class cls2 = String.class;
这两段代码是获取的都是class java.lang.String这个类,所以结果相等,就好像你用
Class cls1 = s1.getClass();
Class cls2 = s2.getClass();
这两个还是相等的
作者:
dangfei
时间:
2012-2-25 22:45
Class cls1 = String.class;
Class cls2 = String.class;
---------------------------------
cls1 和cls2 都是String.class,得到的当然都是String的字节码,他如果不等那就是sun错了。
估计楼主是想问
Class cls1 = s1.getClass();
Class cls2 = s2.getClass();
这个,s1和s2都是通过String字节码创建出来的,他们的class自然也是相等的。
作者:
泮和顺
时间:
2012-2-25 23:03
楼主是不知道String.class的真正含义吧
作者:
H07000223
时间:
2012-2-26 00:16
本帖最后由 H07000223 于 2012-2-26 00:16 编辑
Class cls1 = String.class;
Class cls2 = String.class;
System.out.println(cls1 == cls2);
这个必须等啊~~~String.class是java内置的表示java.lang.String类型的Class对象
这种Class对象是惟一的,也就是不管你是"a".getClass()还是"b".getClass()
只要是
String类型的对象.getClass
()最终获得的都是String.class这个Class对象
作者:
朱皓
时间:
2012-2-26 08:23
String.class;这个返回的其实是一个String类字节码在内存中的地址,
而Class cls1,和Class cls2一个声明,他可以用来接收类字节码对象的地址,
Class cls1 = String.class;其实表示的就是把String类字节码的引用赋给了cls1,
所以无论String.class,调用多少遍,都还是同一份字节码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2