黑马程序员技术交流社区

标题: 为什么在同一个文件夹中可以调用别java类的单独文件 [打印本页]

作者: 老金vic    时间: 2014-3-18 22:22
标题: 为什么在同一个文件夹中可以调用别java类的单独文件
在同一个文件夹下的,不同的类的几个class文件编译之后,为什么一个单独的class类可以被其它类所调用调用?
作者: hyace    时间: 2014-3-18 22:39
你知道classpath吧,classpath指定哪里去寻找第三方类或用户自定义类,而默认classpath是当前目录,这样就可以方便使用当前目录编译出的class文件。
作者: 闯天涯    时间: 2014-3-18 23:37
比如你建立一个Demo01_Object.java,里面调用了Person.java当编译Demo01_Object.java的时候, 在内部发现需要Person类型这时虚拟机就会查找是否存在Person.class如果不存在, 就会查找当前目录是否存在Person.java找到了这个文件, 就会先编译这个Person.java然后得到Person.class才编译Demo01_Object.java运行的时候Demo01_Object的主函数中使用了Person类, 所以虚拟机会把这个类也加载到内存。(可能说的不是很完善,我是这么理解的,你可以看看,别人肯定有别我说的好的)
作者: 老金vic    时间: 2014-3-20 00:17
hyace 发表于 2014-3-18 22:39
你知道classpath吧,classpath指定哪里去寻找第三方类或用户自定义类,而默认classpath是当前目录,这样就 ...

谢谢!多谢赐教
作者: haio    时间: 2014-3-20 10:38
就是在一个java原文件中,假如你写了两个class类,在调用的时候还是会编译出两个class文件,而不是一个class文件包含另一个。比如你以前编译过一个Person原文件现在有编写了一个Java源文件来调用Person类中的成员此时就不需要再编写一个Person类了,只需要将这个新的java原文件进行编译,此时就会同时生成Person类的class文件,后在通过java虚拟机运行此程序。如果javac在编译的时候,没有找到这个Person类的class文件或者Person.java原文件,此时就看你有没有配置classpath,如果有配置,java编译器就会先在classpath中进行查找,然后才是当前目录(看配置是否需要查看当前目录),如果有就会按上面的原理进行,如果没有则编译失败。
作者: 刘凯旋    时间: 2014-3-20 11:03
默认当前目录,一个类中并不一定必须要有主函数,写在一个java文件中或多个java文件中,只要有一个主函数并调用其他类就可以
作者: 十指相扣    时间: 2014-3-20 12:11
都是class 文件放然可以被调用了
作者: Ranger    时间: 2014-3-20 18:55
类与类之间可以通过建立对象相互调用啊,静态对象可以通过类名直接调用。
作者: 老金vic    时间: 2014-3-20 22:13
十指相扣 发表于 2014-3-20 12:11
都是class 文件放然可以被调用了

那不一定吧!要是单独编译的不可以吧!





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