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.