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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 孙百鑫 于 2013-6-15 07:18 编辑

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

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

16 个回复

正序浏览
hx32 高级黑马 2013-6-17 11:54:47
17#

RE: 初级问题,一个文件夹内 多个.java文件只能编译出一个....

          地方
回复 使用道具 举报
hx32 高级黑马 2013-6-15 15:21:55
16#
孙百鑫 发表于 2013-6-15 07:18
楼主.如果您给不了我帮您改了.如有问题.私密我哦

好的,改了就好
回复 使用道具 举报
一个java程序只允许有一个主类
回复 使用道具 举报
楼主.如果您给不了我帮您改了.如有问题.私密我哦
回复 使用道具 举报
hx32 高级黑马 2013-6-14 16:49:10
13#
张承富 发表于 2013-6-14 16:24
在你1楼帖子的左下角有个编辑,在里面改就可以了


原先我都是那么改得,可现在,没有了。我猜测是发帖后一段时间内可以再次编辑。
回复 使用道具 举报
hx32 发表于 2013-6-14 16:01
怎么改,不会了

在你1楼帖子的左下角有个编辑,在里面改就可以了
回复 使用道具 举报
hx32 高级黑马 2013-6-14 16:01:03
11#
qiudengqiang 发表于 2013-6-14 11:49
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三) ...

怎么改,不会了:'(
回复 使用道具 举报
用eclipse后会如果在一个包内出现了同类名的类会提示你的。
回复 使用道具 举报
在我的印象中好像类名是不可以重名的噢~·所以就不会有相同类型的.class,如果你已经生成了一个.class文件然后有修改这个文件,那么你就要重新编译一下新的.class不然你的.class还是旧的,就没有及时更新。这是有一个过程的:编码(.java) - 编译(.class) - 运行 因为jvm是运行.class文件为不是执行.java文件的,所以要通过编译后的.class文件才可以运行的。

如果你的一个包内有多个.java文件的话那么就会有多少个.class,而且它们的类名度是一直对应的,只是后缀名不一致而已。
回复 使用道具 举报
hx32 发表于 2013-6-14 10:28
.CLASS文件的命名不是根据.java文件自动生成的吗?

.java是源码文件。.class是根据源码中的类名产生的。你有多少个类就有多少个.class。但是不能同名。
回复 使用道具 举报
hx32 高级黑马 2013-6-14 11:51:22
7#
qiudengqiang 发表于 2013-6-14 11:49
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三) ...

暂时没有完全解决。解决后会及时更改的,谢谢提醒
回复 使用道具 举报
To 金牌黑马 2013-6-14 11:49:51
地板
如果问题已解决。请及时改为已解决状态。如果未解决,请继续提问!谢谢合作!(哈哈。装一回十三
回复 使用道具 举报
黑马陈涛 发表于 2013-6-14 11:35
.class 文件是根据.java 文件里的类来生成的,文件名为:类名.class,例如建立一个Demo.java里面只有一个类 ...

我懂了,就是一个同名同类型文件自动覆盖,编码太少了。
还有就是Demo1中注释去掉,生成两个.Class文件,但是执行的时候World部分是无效的,没有结果
回复 使用道具 举报
.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

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
王靖远 发表于 2013-6-14 10:06
一个包内只能不能出现同名同类型的文件。就像一个文件夹内的文件不能同名,同类型的文件,如果出现了会提示 ...

.CLASS文件的命名不是根据.java文件自动生成的吗?
回复 使用道具 举报
一个包内只能不能出现同名同类型的文件。就像一个文件夹内的文件不能同名,同类型的文件,如果出现了会提示你是否覆盖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马