Java编译如何在另一个类中创建一个类的对象?

时间:2016-08-21 02:46:03

标签: java oop

我是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类创建对象。这可能是一个愚蠢的问题,但它不会让我在没有答案的情况下继续前进。提前谢谢。

3 个答案:

答案 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