 How do we pass arrays to methods? Let's set up an array and call a method that will square each of the entries in that array. Here's what happens when the call is made. Remember that arrays are references, and all arguments are passed by value. That means that the reference to data is copied into the parameter list. The loop then changes the array referenced by the list parameter, and when the call finishes, data, which refers to the same area of memory, will have been changed in place. Here's the code with some output to show the array before and after the call. Let's run the program, and you'll see that the data array has indeed been changed. There's a school of thought that says you should not change an array that is passed to a function, but instead you should return a new array. Here's how that would work. In the second line, we declare a variable named squared, which will become the result of calling methods square with data as the argument. Notice that the header for the method has changed. It's not void anymore. It returns an array of integers. When we make the call, just as before, list becomes a copy of the reference to data's area of memory. This time, though, we do something different. We create a brand new array, the same length as our input array, and our loop assigns values to the new array. When we return the result, the reference to the result array is assigned to squared, and we now have a separate array with the squared numbers leaving our original array untouched. Here's the code. Let's run this program, and we'll see that the data array is the same before and after, and we have a brand new array squared that has the results we want. So, which should you do? Update arrays in place, or return a new array? If you're in an environment where memory is at a premium and you don't need the original array, then update it in place. Otherwise, I strongly prefer, and this is a personal preference, to return a new array. That way, you can call the function multiple times with the same input and not worry about whether the first call changed your data in some unexpected way.