Can anybody explain what the default access modifier is for an explicit no-arg constructor (and other constructors)?
It differs depending on whether you're writing a constructor for a regular class or an enum:
For classes, the answer is given by JLS §6.6.1:
A class member or constructor declared without an access modifier implicitly has package access.
For enums, the answer is given by JLS §8.9.2:
In an enum declaration, a constructor declaration with no access modifiers is private.
(Enum constructors are always private to prevent other classes instantiating more enum constants.)