黑马程序员技术交流社区

标题: 有一个关于dos指令的问题 [打印本页]

作者: 任增涛    时间: 2012-2-4 11:49
标题: 有一个关于dos指令的问题
各位,有一个特小的问题,一直没好意思问出。
是这样:
class Car
{
      public static void main(String[] args)
     {
     }
}
就当这个是一个完整的程序,我把这个保存在一个文件夹里。名字叫做:Car.java
在dos编译的时候是这样的:javac car.java  也可以是javac Car.java    编译的时候名字是不区分大小写的!
但是在执行的时候必须是这样:java Car   名字一定要区分大小写的!
为什么呢?有点不理解!

作者: 马欢    时间: 2012-2-4 11:53
因为执行的时候是执行的类,类的首字母都是大写的。
作者: 陈时峰    时间: 2012-2-4 12:08
因为编译的时候是编译源文件,也就是 .java文件,在windows系统中文件名的大小写
是不区分的。而运行的时候是运行 .class文件,也就是类,在java中类名必须大写所以
java虚拟机会报错
作者: 张伟~    时间: 2012-2-4 12:21
java中类名必须大写吗?不一定
这应该只是种规范而已,在这里把类名改成car,然后把保存的文件名也改为car.java一样可以编译运行的。
为什么运行时一定要写Car还不是因为你类名Car而不是car
作者: 郭繁森    时间: 2012-2-4 13:26
java命名类名一般每个单词首字母大写

运行时要运行带有主函数的class类后的那个 名字----它大写运行时就要大写
作者: 易伟    时间: 2012-2-4 14:31
java是区分大小写的,.class文件是类源文件编译产生的,如果类名是car ,产生的就是car.class  如果类名是Car,产生的就是Car.class。
Car.class 和car.class是两个不同的类文件。这两个文件是可以同时存在的。
所以在运行的时候dos命令中必须区分大小写。要不然就不知道运行哪个文件了。
作者: 衣服    时间: 2012-2-4 17:53
简单的说 编译器只是翻译为class文件 而在windows下不区分大小写,运行是调用java虚拟机的 它是区分大小写的。

楼主可以去linux系统试试第一步就不行
作者: 吴超    时间: 2012-2-5 00:18
本帖最后由 wuchao2877 于 2012-2-5 00:26 编辑

根据你定义的来定,比如你class定义的是Car
javac Car.java生成一个class文件,
根据你定义的名字
然后输入  java Car
class文件区分大小写     类名与文件名一致
而java源文件不区分大小写
作者: 吴超    时间: 2012-2-5 00:19
如图      c{:soso_e181:}

QQ截图20120205001722.jpg (4.68 KB, 下载次数: 23)

QQ截图20120205001722.jpg

作者: 彭沛东    时间: 2012-2-5 22:28
例:javac 文件名.java (这个归系统管、不区分大小写)
       java 类名 (这个归java管,区分大小写)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2