我是Java的新手,遇到了一个问题,即java编译器如何在另一个类中创建一个类的对象。例如:
我的A级如下:
class A{}
我的主要方法是B类:
class B {
public static void main(String[] args){
A a = new A();
System.out.println(a);
}
}
这是一个问题:我在一个单独的txt文件中编写了A类,在另一个txt文件中编写了B类。当我编译" B类"编译器如何知道" A类"因为B类中没有A类的痕迹而存在。我们没有给出A类的路径,我们也没有给出A类存在的任何线索。但是java编译器如何知道并在B类中为A类创建对象。这可能是一个愚蠢的问题,但它不会让我在没有答案的情况下继续前进。提前谢谢。
答案 0 :(得分:1)
当类在同一个包中时,编译器会自动找到它们。否则,您需要添加" import"表达。例如,Integer Array
答案 1 :(得分:0)
当你创建一个java对象时,有两个主要部分,"创建对象"和"引用该对象"。
编译器只检查参考部分。这意味着它会检查引用的类型(在您的情况下类型是A类)。
因此它不关心对象是否被创建
编译java文件时,它会创建一个.class文件,编译器知道如何在本地磁盘中查找和读取类文件。
答案 2 :(得分:0)
用Java语言编写的源文件使用名为javac的工具编译成.class文件。
javac需要运行两件事:
1)要编译的源文件列表 2)如果您在源代码中引用了其他.class或.java(或jars)文件,则硬盘驱动器上的路径列表。此路径列表称为类路径。
当你在调用javac时没有指定一个classpath参数时,javac会使用你当前的目录来查找支持的.java或.class文件(如果你有一个名为CLASSPATH的环境变量,它也会在那里查找)。
在您的示例中,当javac编译ClassA时,它会看到它依赖于ClassB,并尝试在与ClassA相同的目录中查找ClassB.java。
如果您使用IDE进行编译,那么您的IDE将负责填写javac需要运行的参数。
您可以在此处详细了解javac:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html