Java main method must be static, but public is not strictly required (though runtime looks for public). Variations: A is standard, B is valid static main without args (compile-time valid, though JVM won't call it), C is valid non-public static main, D is invalid syntax (void must come before method name, not after).