关于java中一次编译多个源文件时的编译顺序的问题

为了节省回答者的时间我先把问题提出来,再针对问题案例作详细说明。如果能不用看问题案例就回答出来当然省时。我的问题是java里面,用命令行提示符环境编译源文件的时候,加上*通配符,

如javac -d .Test*.java的形式,这种情况下编译器将选择怎样的顺序编译文件名里含有Test字段的多个源文件?是不是从Test开始?我已经试验过了,结果是不一定。希望回答者针对自己的答案给我拿出来让我信服的证据,有理想答案的话我会追加可观的积分,希望各路英雄小驻帮忙,谢了。


案例源文件如下:

程序清单1Test.java

package org.it315;
import org.it315.example.*;
public class Test
{
 public static void main(String [] args)
 {
  new TestPackage().print();
 }
}

程序清单2TestPackage.java

package org.it315.example;
public class TestPackage
{
 public void print()
 {
  System.out.println("the program is demostrating how to using package!");
 }
}

程序源文件来自于张孝祥的java就业培训教程。不过原书源码的类名是反过来的,我为了求证问题把类名掉换了。问题如下:以上是2个源文件,用javac -d . Test*.java命令编译。书中介绍在命令中加上*可以一次编译多个文件,其实不过是通过*通配符实现的编译文件名中带“Test”的所有源文件。可是大家一看就知道上面的2段源码其实是一个整体,Test有调用TestPackage一个方法。我在命令行提示符环境下编译过了,只有通过“javac -d . Test*.java”加通配符方式或者先编译TestPackage再编译Test才能成功,因为很明显在TestPackage所在包还没有编译形成的时候Test是找不到它的内部方法的。我的问题是编译器怎么会知道Test有调用TestPackage的东西而先编译后者?还是说它先编译过了Test发现不好使就转去编译TestPackage了?其中遵循的是怎样一个规则?