What are we passing? In any programming language, we need to call functions or methods. We "pass" the inputs and get the output. For example, to add two numbers, 3 and 5, we will pass those numbers and get 8 as output. These inputs can be primitives(like above) which will represent simple types or Object References . Object can represent complex types . Animals, Vehicles are examples. A Cat or Car has many properties and behavior. How Methods are processed ? In Java, for each method call, a stack is created. Program execution happens in the main stack and for each method call, a separate stack is created. Once the method is completed, stack goes out of scope and control comes back to the execution point in the main method call. How simple and complex types are made available in Method call stacks? For simple types, value is stored in the stack itself. For complex types, objects are stored in the heap and address is stored in the stack which points to a location in the heap. ...