It depends on when each class is first used.
From section 12.4.1 of the Java Language Specification:
A class or interface type T will be initialized immediately before the first occurrence of any one of the following:
T is a class and an instance of T is created.
T is a class and a static method declared by T is invoked.
A static field declared by T is assigned.
A static field declared by T is used and the field is not a constant variable (§4.12.4).
T is a top level class (§7.6), and an assert statement (§14.10) lexically nested within T (§8.1.3) is executed.
A reference to a static field (§8.3.1.1) causes initialization of only the class or interface that actually declares it, even though it might be referred to through the name of a subclass, a subinterface, or a class that implements an interface.
Section 12.4.2 of the JLS specifies the initialization procedure in detail.
To be honest, if your code requires one to be initialized before the other, despite having no obvious dependency, then you've got problems anyway.
mainmethod you're executing.