What is 5? 

5 is an int value in Java.

What is a type? 

A type is a set of values with operations defined on it. 

What is a variable? 

A variable is a name for an intermediate value. 

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> Integer a
> a = new Integer(4)
4
> a.getValue()
Static Error: No method in Integer has name 'getValue'
> a.intValue()
4
> Integer b = new Integer(4)
> a
4
> b
4
> a - b
0
> a == b
false
> a.intValue() == b.intValue()
true


Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> int a, b
> a = 3
3
> b = 3
3
> a - b
0
> a == b
true
> a = new Integer(4)
4


In Java there are eight primitive types 

  int      long short byte

  double   float 

  char

  boolean 

Everything else is reference type (class, user-defined type). 

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> int mahamat = 6
> int taylor = mahamat
> mahamat += 1
7
> mahamat
7
> taylor
6


In lab you will get your exams. 

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> Counter a, b
> a = new Counter(6)
Counter@2a91b1
> a
Counter@2a91b1
> a.getValue()
6
> b
null
> b = a
Counter@2a91b1
> a
Counter@2a91b1
> b
Counter@2a91b1
> a.getValue()
6
> b.getValue()
6
> a.increment()
> a.getValue()
7
> b.getValue()
7


Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> Integer.valueOf(4)
4
> Integer a = Integer.valueOf(4)
> a
4
> Integer b = Integer.valueOf(4)
> b
4
> a-b
0
> a==b
true
> b = Integer.valueOf(300)
300
> a = Integer.valueOf(300)
300
> a - b
0
> a == b
false
>

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> int[] a
> a
null
> a = new int[6]
{ 0, 0, 0, 0, 0, 0 }
> a
{ 0, 0, 0, 0, 0, 0 }
> a[2] = 5
5
> a
{ 0, 0, 5, 0, 0, 0 }
> a.length
6
> Integer b = new Integer[4]
Static Error: Bad types in assignment: from Integer[] to Integer
> Integer[] b = new Integer[4]
> b
{ null, null, null, null }


Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> ArrayList<Integer> a
Static Error: Undefined class 'ArrayList'
> import java.util.ArrayList; // auto-import
ArrayList<Integer> a
> a
null
> a = new ArrayList<Integer>()
[]
> a
[]
> a.add(new Integer(4))
true
> a
[4]
> a.add(5)
true
> a.add(-1)
true
> a.add(2)
true
> a
[4, 5, -1, 2]
> a.remove(1)
5
> a
[4, -1, 2]
> a.add(2, 5)
> a
[4, -1, 5, 2]
>

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> import java.util.ArrayList
> ArrayList<Integer> a
> ArrayList<int> a
Static Error: Type has incompatible bounds


import java.util.Arrays;

class ArrayList {
  int[] values = new int[0];
  void add(int value) {
    this.values = Arrays.copyOf(this.values, this.values.length + 1);   
    this.values[this.values.length - 1] = value;
  }
  public String toString() {
    return java.util.Arrays.toString( this.values );  
  }
}

Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> ArrayList a
> a
null
> a = new ArrayList()
[]
> a
[]
> a.add(4)
> a
[4]
> a.add(5)
> a
[4, 5]
> a.add(2)
> a
[4, 5, 2]
> a.size()
Static Error: No method in ArrayList has name 'size'


Welcome to DrJava.  Working directory is C:\Users\dgerman\Desktop
> int[] a = { 4, 3, 2, 1, 0}
> a
{ 4, 3, 2, 1, 0 }
> int[] b =  new int[3]
> b
{ 0, 0, 0 }
> a
{ 4, 3, 2, 1, 0 }
> a[a.length-1] = 5
5
> a
{ 4, 3, 2, 1, 5 }
> int[] c = new int[a.length + 1]
> c
{ 0, 0, 0, 0, 0, 0 }
> for (int i = 0; i < a.length; i++) {
    c[i] = a[i];
  }
> c
{ 4, 3, 2, 1, 5, 0 }
> a
{ 4, 3, 2, 1, 5 }
> c[c.length-1] = 9
9
> c
{ 4, 3, 2, 1, 5, 9 }
> a
{ 4, 3, 2, 1, 5 }
> a = c
{ 4, 3, 2, 1, 5, 9 }
> a
{ 4, 3, 2, 1, 5, 9 }
> a = java.util.Arrays.copyOf( a, a.length + 1 )
{ 4, 3, 2, 1, 5, 9, 0 }
> a[a.length-1] = -2
-2
> a
{ 4, 3, 2, 1, 5, 9, -2 }