黑马程序员技术交流社区

标题: 初级问题,一个文件夹内多个.java文件只能编译出一个.class? [打印本页]

作者: hx32    时间: 2013-6-14 09:57
标题: 初级问题,一个文件夹内多个.java文件只能编译出一个.class?
本帖最后由 孙百鑫 于 2013-6-15 07:18 编辑

这个问题是在注册之前出现的,一直有点小疑惑
在同一个文件夹内有多个.java文件,经过javac编译后,只能出现一个.class吗?
在我这里是这样的,编译一个.java后出现一个.class,编译第二个.java时,第一次出现的.class文件被更改,但是文件夹内只有一个.class文件。
是什么原因呢?

作者: 王靖远    时间: 2013-6-14 10:06
一个包内只能不能出现同名同类型的文件。就像一个文件夹内的文件不能同名,同类型的文件,如果出现了会提示你是否覆盖。
作者: hx32    时间: 2013-6-14 10:28
王靖远 发表于 2013-6-14 10:06
一个包内只能不能出现同名同类型的文件。就像一个文件夹内的文件不能同名,同类型的文件,如果出现了会提示 ...

.CLASS文件的命名不是根据.java文件自动生成的吗?
作者: 黑马陈涛    时间: 2013-6-14 11:35
.class 文件是根据.java 文件里的类来生成的,文件名为:类名.class,例如建立一个Demo.java里面只有一个类 class Hello,那么编译之后就会有一个Hello.class生成,再建立一个Demo1.java,如果里面的类依然是class Hello,那么编译之后,文件里只有一个Hello.class文件。
Demo.java
class Hello
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}


Demo1.java
/*class World
{
        public void a()
        {
                System.out.println("World!");
        }       
}*/
class Hello
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
Demo1.java 如果把注释去掉就会生成两个.class文件 Hello.class 和World.class


作者: hx32    时间: 2013-6-14 11:47
黑马陈涛 发表于 2013-6-14 11:35
.class 文件是根据.java 文件里的类来生成的,文件名为:类名.class,例如建立一个Demo.java里面只有一个类 ...

我懂了,就是一个同名同类型文件自动覆盖,编码太少了。
还有就是Demo1中注释去掉,生成两个.Class文件,但是执行的时候World部分是无效的,没有结果
作者: To    时间: 2013-6-14 11:49
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三
作者: hx32    时间: 2013-6-14 11:51
qiudengqiang 发表于 2013-6-14 11:49
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三) ...

暂时没有完全解决。解决后会及时更改的,谢谢提醒
作者: 王靖远    时间: 2013-6-14 12:02
hx32 发表于 2013-6-14 10:28
.CLASS文件的命名不是根据.java文件自动生成的吗?

.java是源码文件。.class是根据源码中的类名产生的。你有多少个类就有多少个.class。但是不能同名。
作者: ′х.|鰉❤耔    时间: 2013-6-14 12:42
在我的印象中好像类名是不可以重名的噢~·所以就不会有相同类型的.class,如果你已经生成了一个.class文件然后有修改这个文件,那么你就要重新编译一下新的.class不然你的.class还是旧的,就没有及时更新。这是有一个过程的:编码(.java) - 编译(.class) - 运行 因为jvm是运行.class文件为不是执行.java文件的,所以要通过编译后的.class文件才可以运行的。

如果你的一个包内有多个.java文件的话那么就会有多少个.class,而且它们的类名度是一直对应的,只是后缀名不一致而已。
作者: 王靖远    时间: 2013-6-14 12:49
用eclipse后会如果在一个包内出现了同类名的类会提示你的。
作者: hx32    时间: 2013-6-14 16:01
qiudengqiang 发表于 2013-6-14 11:49
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三) ...

怎么改,不会了:'(
作者: 张承富    时间: 2013-6-14 16:24
hx32 发表于 2013-6-14 16:01
怎么改,不会了

在你1楼帖子的左下角有个编辑,在里面改就可以了
作者: hx32    时间: 2013-6-14 16:49
张承富 发表于 2013-6-14 16:24
在你1楼帖子的左下角有个编辑,在里面改就可以了


原先我都是那么改得,可现在,没有了。我猜测是发帖后一段时间内可以再次编辑。

作者: 孙百鑫    时间: 2013-6-15 07:18
楼主.如果您给不了我帮您改了.如有问题.私密我哦
作者: 李九一    时间: 2013-6-15 07:28
一个java程序只允许有一个主类
作者: hx32    时间: 2013-6-15 15:21
孙百鑫 发表于 2013-6-15 07:18
楼主.如果您给不了我帮您改了.如有问题.私密我哦

好的,改了就好
作者: hx32    时间: 2013-6-17 11:54
标题: RE: 初级问题,一个文件夹内 多个.java文件只能编译出一个....
          地方




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