You write the following class: public class ChangeableInt { private static int num; public ChangeableInt(int tempNum){ num = tempNum; } public int getNum(){ return num; } public void setNum(int newNum){ num = newNum; } public void increment(){ num++; } } which implements a mutable integer. Like a good programmer, you write some tests to make sure your class is working as expected: public static void test1(){ ChangeableInt num = new ChangeableInt(10); System.out.println(num.getNum()); num.increment(); System.out.println(num.getNum()); num.setNum(20); System.out.println(num.getNum()); } public static void test2(){ ChangeableInt num1 = new ChangeableInt(10); ChangeableInt num2 = new ChangeableInt(20); System.out.println(num1.getNum()); System.out.println(num2.getNum()); } Everything looks good when you run the first test and you get the expected output of: 10 11 20 However, when you run the second test, you get a surprising result: 20 20 What is the problem?