Generally you won't have to worry about either one.
Java creates all objects on the heap. It's a big chunk of memory set aside for all your application's objects.
The stack is used by threads during method invocations. Paramaters are passed to methods by copying them to the stack, and when the method starts, it retrieves the paramaters from the stack. It also returns values by copying them on the stack. Local variables created within methods are also created on the stack.