static void main(String [] argv) { for (int i=0;i<argv.length;i++) String arg = argv[i];..
The reason is simply that an array in Java has a length that can be queried. A C array's length must be kept in a separate variable: in this case "argc", the argument count. The main functions body needs first to check argc and then it knows how many arguments are there. The first argument string btw. is always the programs name.
But now another question comes up: How do those command line arguments get into the program? If main is a function than somebody must have set up the arguments in a way that they look to main just like regular parameters. The answer ist: the C-runtime system, together with the operating system, perform this trick. And the same goes for environment variables like "path" or "home".