How often does the letter ":" occur in:
Q: Когда выполняется main? Есть Class1, в котором создаётся экземпляр Class2:
public class Class1 {
    public static void main(String[] args) {
        Class2 class2 = new Class2("Hello");
    }
}

Class2:
public class Class2 {

    static String hello;

    Class2( String hello){
       this.hello = hello;
    }

    public static void main(String[] args) {
        System.out.print(hello);
    }
}

Почему при таком создании экземпляра Class2 не исполняется его метод main? Разве создание класса не должно автоматически исполнять его метод main?

A: Метод 
public static void main(String[] args) {
    // your code
}

Является, в некотором смысле, маяком для компилятора. Он позволяет определить, что класс, в котором расположен этот метод, является стартовым и с него нужно начинать работу приложения. 
Создание экземпляра класса вызывает автоматический вызов конструктора этого класса:
Foo foo = new Foo();

Что подразумевает выполнения метода-конструктора в классе Foo, а не выполнения его main.
class Foo {
    public Foo() {
        // Конструктор
    }
}

Таким образом, в случае, если вы хотите, чтобы ваш класс Class2 при создании выводил на экран переменную hello, то вам необходимо определить метод для этого:
    public class Class2 {

    static String hello;

    Class2(String hello){
       this.hello = hello;
       printHello();
    }

    void printHello(){
       System.out.println(this.hello);
    }


A: метод main используется как точка входа приложения. 
Если вы хотите передать аргумент при создании объекта:
Class2 obj = new Class2("Hello");

то вам нужно добавить конструктор и в нем уже работать с аргументами.
Или создать метод в классе Class2 и вызывать его уже после создания объекта, передавая в него аргумент.
obj.myPrint("Hello"); 


user
I found 8 ":"s in the provided passage.
assistant