# Lecture on October 4th

## Pass by Copy vs Pass by Reference

### Pass by Copy

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

### Pass by Reference

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.

### What's the Implication?

If you change the primitive in a method, it doesn't actually change the value of the variable.

If you pass in an array and change it in the method, it has been permanently changed outside the method as well.

### How do I make it so I can't change my array by accident?

Use the `final`keyword in the method header

    public static void printAll(final int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.println("Number " + (i + 1) + " is " + array[i])
        }
    }