I understand that String[] args is an array of strings passed into main as parameters.
java Print \"Hello, World!\"
Because the code that runs your main() function is looking very specifically for that signature. Think of it as having, somewhere:
main()
YourClass.main(new String[] { ... });
Obviously, if main takes anything else, this will fail.