<p>When you pass a primitive type into a method (int, char, double, float, etc), it makes a copy of the value of the variable and brings it into the method</p>
<h3>Pass by Reference</h3>
<p>When you pass an array into a method (int[], char[], double[], etc[]), it passes in the reference of the variable into the method. In other words, you give the actual array into the method and allows the method to change it.</p>
<h3>What's the Implication?</h3>
<p>If you change the primitive in a method, it doesn't actually change the value of the variable.</p>
<p>If you pass in an array and change it in the method, it has been permanently changed outside the method as well.</p>
<h3>How do I make it so I can't change my array by accident?</h3>
<p>Use the <code>final</code>keyword in the method header</p>