java 增强for循环对于空集和null的判断

https://www.cnblogs.com/licheng0201/p/10669629.html

List<String> list = null;
for (String str : list) {//会报空指针异常
      System.out.println(str);
}

List<String> list = new ArrayList();//正常运行
for (String str : list) {
      System.out.println(str);
}

集合为null时会报空指针异常;长度为0的空集合不会;

 

好的,以下是代码实现: Student类代码: ``` public class Student implements Comparable<Student> { private int sno; private int sclass; private int score; public Student(int sno, int sclass, int score) { this.sno = sno; this.sclass = sclass; this.score = score; } @Override public String toString() { return "Student{" + "sno=" + sno + ", sclass=" + sclass + ", score=" + score + '}'; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Student student = (Student) obj; return sclass == student.sclass; } @Override public int compareTo(Student o) { return o.score - this.score; } } ``` 主类代码: ``` import java.util.Arrays; public class Main { public static void main(String[] args) { Student[] students = new Student[20]; for (int i = 0; i < students.length; i++) { int sno = i + 1; int sclass = (int) (Math.random() * 3) + 1; int score = (int) (Math.random() * 11) + 90; students[i] = new Student(sno, sclass, score); } for (Student student : students) { System.out.println(student.toString()); } System.out.println("与第一个学生同班的学生:"); for (int i = 1; i < students.length; i++) { if (students[0].equals(students[i])) { System.out.println(students[i].toString()); } } Arrays.sort(students); System.out.println("按成绩降序排列后的学生信息:"); for (Student student : students) { System.out.println(student.toString()); } } } ``` 这段代码中,我们首先创建了一个包含20个Student对象的数组,然后使用循环输入20个学生信息存入数组,其中学号依次为1-20,班级1-3随机产生,成绩90-100随机产生;接着使用增强for循环输出学生数组的信息,其中每个学生信息调用toString()方法输出;然后通过调用equals()方法找出与第一个学生同班的学生并输出;接着调用Arrays类的sort()方法对学生数组按成绩降序排列;最后使用增强for循环输出排序后的学生信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值