Primitive and Reference Types in Java