public class ArrayAndMethod { public static void printArray( int[] array ) { for( int i = 0; i < array.length; ++i ) System.out.print( array[i] + " " ); System.out.println(); } public static void inc( int n ) { ++n; } public static void inc( int[] a ) { ++a[0]; } public static int[] createArray( int n ) { int[] a = new int[n]; for( int i = 0; i < a.length; ++i ) a[i] = i + 1; return a; } public static int sum( int... numbers ) { int sum = 0; for( int i = 0; i < numbers.length; ++i ) sum += numbers[i]; return sum; } public static void main( String[] args ) { int n = 10; inc( n ); // primitive types are pass-by-value System.out.println( n ); int[] a = { 10 }; inc( a ); // arrays and objects are pass-by-reference System.out.println( a[0] ); // assigning an array to another variable doesn't make a copy int[] b = a; b[0] = 100; System.out.println( a[0] ); // making a copy of an array requires creating a new array, then copy // over the elements one by one b = new int[1]; b[0] = a[0]; b[0] = 200; System.out.println( b[0] + ", " + a[0] ); int[] c = createArray( 10 ); printArray( c ); System.out.println( sum() ); System.out.println( sum( 1 ) ); System.out.println( sum( 1, 2 ) ); System.out.println( sum( 1, 2, 3 ) ); } }