System
is the name of a class (java.lang.System
) and follows normal conventions.
out
is a static field. This is conventionally named, but it's quite rare to see public fields for anything other than constants.
The type of out
is PrintStream
, and println()
is just a method on PrintStream
- again, conventionally named.
It may help (in terms of understanding) to break things up:
PrintStream outputStream = System.out; // Access to the out field
outputStream.println(); // Just a method call
Now as for why you have to use a lower case 'o' and a lower case 'p' in the code System.out.println()
- that's just because Java is case sensitive, and the names are out
and println()
, not Out
and Println()
. They could have been named in the latter way, but that would violate normal Java naming conventions.