Вы ищете разницу между выражениями и выражениями-выражениями. Такие выражения, как myVoid();
, могут быть записаны как утверждение: это недействительные методы и т. Д. (Это та часть, которую вы знаете). Выражения, такие как (3 + 2);
и "arbitraryString"
, не имеют побочных эффектов. Их можно рассматривать только как значение, поскольку код не выполняется. Операторы выражения, такие как new Object();
, могут иметь побочные эффекты и выполнять код, и иногда вы просто хотите, чтобы этот код выполнялся и игнорировал возвращаемое значение. Поэтому компилятор допускает это.