(JAVA基础面试题)从性能上看,下面的代码有何不妥,为什么?

class A {
public static void main(String[] args) {
List userList = userManager.getUserList();
for (int i = 0;i<userList.size();i++) {
User u=new User();
u=(User) userList.get(i);
System.out.println(u.getUserName());
}
}
}

User u=new User();
这个毫无必要地多初始化了一个User

User u=(User) userList.get(i);
即可。

在for循环中创建了size次 对象u,而u只是一个引用变量的作用,只需要一个就够了,所以把u的定义放到for循环外,也不需要用new再创建一个对象,甚至可以不用u

class A {
    public static void main(String[] args) {
        List userList = userManager.getUserList();
        User u;
        for (int i = 0; i < userList.size(); i++) {
            u = (User)userList.get(i);
            System.out.println(u.getUserName());
        }
    }
}

 class A {
    public static void main(String[] args) {
        List userList = userManager.getUserList();
        for (int i = 0;i<userList.size();i++) {
            User u=new User();
            u=(User) userList.get(i);
            System.out.println(u.getUserName());
        }
    }
}

for循环内userList.size()不可取,每次for都需要size一下,比较浪费

最好在循环userList之前,判断端UserList.size()>0

多谢各位老哥的解答