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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在同一个文件夹下的,不同的类的几个class文件编译之后,为什么一个单独的class类可以被其它类所调用调用?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

8 个回复

倒序浏览
你知道classpath吧,classpath指定哪里去寻找第三方类或用户自定义类,而默认classpath是当前目录,这样就可以方便使用当前目录编译出的class文件。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
比如你建立一个Demo01_Object.java,里面调用了Person.java当编译Demo01_Object.java的时候, 在内部发现需要Person类型这时虚拟机就会查找是否存在Person.class如果不存在, 就会查找当前目录是否存在Person.java找到了这个文件, 就会先编译这个Person.java然后得到Person.class才编译Demo01_Object.java运行的时候Demo01_Object的主函数中使用了Person类, 所以虚拟机会把这个类也加载到内存。(可能说的不是很完善,我是这么理解的,你可以看看,别人肯定有别我说的好的)

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
hyace 发表于 2014-3-18 22:39
你知道classpath吧,classpath指定哪里去寻找第三方类或用户自定义类,而默认classpath是当前目录,这样就 ...

谢谢!多谢赐教
回复 使用道具 举报
就是在一个java原文件中,假如你写了两个class类,在调用的时候还是会编译出两个class文件,而不是一个class文件包含另一个。比如你以前编译过一个Person原文件现在有编写了一个Java源文件来调用Person类中的成员此时就不需要再编写一个Person类了,只需要将这个新的java原文件进行编译,此时就会同时生成Person类的class文件,后在通过java虚拟机运行此程序。如果javac在编译的时候,没有找到这个Person类的class文件或者Person.java原文件,此时就看你有没有配置classpath,如果有配置,java编译器就会先在classpath中进行查找,然后才是当前目录(看配置是否需要查看当前目录),如果有就会按上面的原理进行,如果没有则编译失败。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
默认当前目录,一个类中并不一定必须要有主函数,写在一个java文件中或多个java文件中,只要有一个主函数并调用其他类就可以
回复 使用道具 举报
都是class 文件放然可以被调用了
回复 使用道具 举报
Ranger 中级黑马 2014-3-20 18:55:17
8#
类与类之间可以通过建立对象相互调用啊,静态对象可以通过类名直接调用。
回复 使用道具 举报
十指相扣 发表于 2014-3-20 12:11
都是class 文件放然可以被调用了

那不一定吧!要是单独编译的不可以吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马