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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔九 中级黑马   /  2013-1-24 20:38  /  1488 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在dos 命令行中用编译器javac编译java源文件后缀要带.java而运行编译码是却要吧字节码的.class去掉
javac  Demo.java
java Demo
?{:soso_e132:}

2 个回复

倒序浏览
编译时带上.java应该是为了容易区分.java文件,如果你的文件夹了有多个同名的文件,有的是.java的源文件,有的不是,但是名字一样怎么办啊。所以要加上。
但是运行时为什么可以不写后缀,有可能是在编译源文件的时候生成的.class文件有同名的就被覆盖了,所以可以直接写名称就可以运行了。也有可能虚拟机会在加载的时候自动给你加上后缀.class.
其实我也想知道原因。以上只是个人见解,还望高手指点。
回复 使用道具 举报
javac是编译命令,所谓的编译就是把源文件(java中就是指.java文件)转换为字节码文件,而字节码文件的后缀名是.class。所以在编译的时候你需要告诉编译器你要编译的原文件的全称,而编译器默认认识的文件就是.java为扩展名的,所以需要加.java后缀,让编译器能够识别到。而编译后生成的.class字节码文件,其实就是类的字节码文件。运行时,运行的不是文件,而是与主类名称一直的字节码文件,因为主类和文件名保持一致,所以你运行输入的Demo就是类名,它是不需要文件扩展名的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马