Как в java примитивные типы передаются? По значению или по ссылке? По значению, конечно. А это значит, что изменение значения этой переменной в методе chooseRoof() никак не повлияет на значение переменной в методе main().
public static void change(A a) {
a = new A(5);
}