These are the notes as written today in class. 

There is a difference between int     and Integer

There is a difference between char    and Character 

There is a difference between boolean and Boolean

There is a difference between double  and Double 

String a = new String("something"); 

String b = "something";

We'll write a program.

In Java we have eight primitive types. 

They are: int, long, byte, short, double, float, char, boolean. 

Values of primitive types fit entirely inside a variable. 

Everything else is a reference type, or user-defined type. 

Values of user-defined type take more space than what's available in a box.

A box (variable) only has room for the address to a value of reference type. 

Types that are not primitive: 

String, Integer, Double, Character, Scanner, Boolean and many others. 

class One {
  public static void main(String[] args) {
    { String a = new String("something");
      String b = new String("something");
      System.out.println( a == b ); 
    }
    {
      Integer b = 6 - 4, c = 1  + 1; 
      int e = 4 - 2; 
      System.out.println( b == c); // true 
      System.out.println( b == e ); 
      Integer d = new Integer(3);
      Integer g = new Integer(1 + 2); 
      
      System.out.println( g == d ); // false 
      int x = 3, y = 1 + 2;
      System.out.println( x == y ); // true 
    }
  }
}

int[] a;
a = new int[10];
a[3] = -1; 

int[][] b;
b = new int[3][5];
b[1][2] = 4; 

Isn't there some data structure that grows with the data you put in it?

Yes. ArrayLists are for that. They grow and shrink as needed. 

What can you store inside an ArrayList?

Answer: you can store any kind of value of reference type. 

So you can store Integer values but not int values. 

ArrayList<Integer> a;
a = new ArrayList<Integer>(); 
a.add(3); 
a.add(-1);
a.add(2); 

Let's give an example:

import java.util.*; 

class One {
  public static void main(String[] args) {
    ArrayList<Integer> a;
    a = new ArrayList<Integer>(); 
    a.add(3); 
    a.add(-1);
    a.add(4); 
    System.out.println( a ); 
    System.out.println( a.size() ); 
  }
}

Let's come up with an example of using a two-dimensional array:

import java.util.*; 

class One {
  public static void main(String[] args) {

    int size = Integer.parseInt( args[0] ); 
    
    char[][] letter; 
    
    letter = new char[size][size]; 
    
    for (int i = 0; i < letter.length; i++) {
      System.out.println ( Arrays.toString( letter[i] )); 
    }
    
    for (int line = 0; line < letter.length; line = line + 1) {
      for (int column = 0; column < letter[line].length; column = column + 1) {
        if ( line == 0 || line == size-1 || line + column == size-1 ||
             line == size / 2 && column > size / 4 && column < 3 * size / 4
            ) {
          letter[line][column] = '*';  
        }
      }
    }
    
    for (int i = 0; i < letter.length; i++) {
      // System.out.println ( Arrays.toString( letter[i] )); 
      for (int j = 0; j < letter[i].length ; j++) {
         System.out.print( letter[i][j] + " "); 
      }
      System.out.println(); 
    }
  }
}

Can you write this program with ArrayLists? 

--