There is a substantial difference between variables of type reference to an object and variables of primitive types:
Example:
public class Account { public int bal; public Account(int x) { bal = x; } } ... Account r1, r2; r1 = new Account(100); r2 = r1; r2.bal = 234; System.out.println(r1.bal); // prints 234
The variables r1 and r2 contain references to objects, not objects. The assignment r2 = r1 assigns to r2 the reference to the object of type Account, not the object itself. Each successive modification to the object referenced from r2 will also be visible through r1.
int c1, c2; c1 = 100; c2 = c1; c2 = 234; System.out.println(c1); // prints 100
The assignment c2 = c1 assigns the value 100 to c2. Successive modifications of c2 do not influence c1.