Le variabili locali (e vale anche per i parametri di metodi/costruttori) sono sempre sullo stack, indipendentemente dal tipo (primitivo o reference).
Gli oggetti, gli array e le variabili di istanza (che ovviamente sono nell'oggetto) sono sempre sul heap.
Anche le variabili static ("di classe") sono sempre sul heap.