Java has local, instance and static variables. Instance and static variables doesn't need to initialized before usage as they have default values. Why local variables don't have a default value?
Java passes by value for primitives. How about reference types which store the address of the object in the heap?
I'm an Applications Developer at Oracle. It has been 7.5 years since I started working on the software industry and I can very well accept that only for the last couple of years I acted like one.