A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭宁 中级黑马   /  2012-6-5 16:51  /  1931 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就写这几个~
先不要运行啊,自己感觉一下,然后再对比一下结果,。再然后说说为啥,这个我真不肯定。
                System.out.println(String.class);
                System.out.println(Integer.class);
                System.out.println(Double.class);
                System.out.println(String.class);
                System.out.println(char.class);
                System.out.println(int.class);
                System.out.println(enum.class);
                System.out.println(interface.class);
                System.out.println(abstract.class);

点评

算了,我直接给你敲个代码吧。。。。。  发表于 2012-6-5 20:35

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

6 个回复

倒序浏览
我机器上的结果,后面3个编译不过,类名不能为关键字
class java.lang.String
class java.lang.Integer
class java.lang.Double
class java.lang.String
char
int
我本来觉得char.class会编译通不过的,char根本就不是一个类么。可能编译器比较智能吧,我觉得纠结这个的话和java语言本身关系不太大,看具体编译器厂商的实现的吧。
如果有高人能解释更好了
回复 使用道具 举报
郭宁 来自手机 中级黑马 2012-6-5 17:10:39
藤椅
闾丘日月 发表于 2012-6-5 17:02
我机器上的结果,后面3个编译不过,类名不能为关键字
class java.lang.String
class java.lang.Integer

只是想明白它为啥,你不感觉心里清清楚楚的可舒服么?
回复 使用道具 举报
郭宁 发表于 2012-6-5 17:10
只是想明白它为啥,你不感觉心里清清楚楚的可舒服么?

恩,我也想知道,但是我水平不够。也没太多时间来看这种小细节了,所以没办法帮你拉
回复 使用道具 举报
System.out.println(enum.class);
System.out.println(interface.class);
System.out.println(abstract.class);
我是这么看的 这三个都是关键字,而且都不可以做为返回类型,总不能java里的所有类似关键字都得有字节码文件吧,别太纠结;他们只是用于区别不同性质类的;
回复 使用道具 举报
后三个如楼上所说,关键字,不可做返回类型,没有class这个字段。
至于前面的,在api里找到了如下:
Class类:
基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
可以使用一个类字面值来获取指定类型(或 void)的 Class 对象。
Clss类的toString方法:
public String toString()将对象转换为字符串。字符串的表示形式为字符串 "class" 或 "interface" 后面紧跟一个空格,然后是该类的完全限定名,它具有 getName 返回的那种格式。如果此 Class 对象表示一个基本类型,则此方法返回该基本类型的名称。如果该 Class 对象表示 void,则此方法返回 "void"。
回复 使用道具 举报
蒋亮 中级黑马 2012-6-10 13:59:33
7#
不能说因为后面三个是关键字所以不行,int、char、String这些就不是关键字吗?关键是要看能不能作为返回值类型,是的话就可以用.class来获得其字节码,不是那就没戏
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马