/**
 * Demonstrates that assigning an array variable to another variable
 * does *not* make a copy of an array.  Both variables are
 * referencing the same array.
 * Also demonstrates the increment operator.
 * @author CSCI209
 */
public class ArrayVars {
    
    public static void main(String[] args) {
        int [] fibNums = {1, 1, 2, 3, 5, 8, 13};
        int [] otherFibNums;
        
        // note how this displays
        System.out.println("fibNums: " + fibNums);
        
        int i;
        for(i=0; i < fibNums.length-1; i++) {
            System.out.print(fibNums[i]+" ");
        }
        System.out.println(fibNums[i]);
        
        System.out.println("\nAssign otherFibNums to fibNums...");
        otherFibNums = fibNums;
        
        System.out.println("Assign otherFibNums[2] = 99...");
        otherFibNums[2] = 99;
        
        System.out.println("\notherFibNums[2] = " + otherFibNums[2]);
        System.out.println("fibNums[2] = " + fibNums[2]);
    
        // Each statement above will output 99.  Why?
        
        System.out.println("\nPlaying with increment operator...");
        
        int x = 3;
        // This will display fibNums[3]
        System.out.println("\nWhen x is " + x + ", fibNums[x++] = " + fibNums[x++]); 
        
        System.out.println("x is now " + x);

        // Reset x back to 3
        x = 3;
        // This will display fibNums[4]
        System.out.println("When x is " + x + ", fibNums[++x] = " +fibNums[++x]);
        System.out.println("x is now " + x);
  
        System.out.println("\nComparing arrays:");
        System.out.print("otherFibNums == fibNums?: ");
        System.out.println(otherFibNums == fibNums);
        
        String[] myArgs = args;
        System.out.print("myArgs == args?: ");
        System.out.println(myArgs == args);
    }

}
