Если Вы просто хотите что-то простое:
' . number_format($money, 2);
Нестатический блок выполняется, когда создается «экземпляр» класса.
Таким образом,
System.out.println(Main.m.toString());
ничего не печатает, потому что вы не создали экземпляр.
Попробуйте сначала создать экземпляр
Main main = new Main();
, и вы увидите то же сообщение, что и B
Как вы знаете, переменные класса (объявленные с использованием static) входят в область действия при использовании экземпляров блоков.
См. также:
В A
у вас есть инициализатор экземпляра. Он будет выполняться каждый раз, когда вы создаете новый экземпляр A
.
Если несколько потоков создают экземпляры A
, этот код сломается. И даже в одном потоке обычно не требуется, чтобы один экземпляр изменял состояние, которое совместно используется каждым экземпляром. Но если вы это сделали, это один из способов добиться этого.