Java复习

异常在这里插入图片描述

  • 编译时异常
    必须要处理,两种处理方案:
  1. try … catch …
  2. throws,throws + 异常类名 跟在方法的括号后面。如果采用throws,即抛出异常,将来谁调用谁来处理
  • 运行时异常
    可以不处理,出现问题后再修改代码,也可以像编译时异常进行处理。
  • throw 和 throws的区别
  1. throws用在方法声明后面,跟的是异常类名,表示抛出异常,由该方法的调用者来处理。表示出现异常的一种可能性,并不一定发生这些异常。
    2)throw用在方法体内,跟的是异常对象名,表示抛出异常,由方法体内的语句处理。执行throw一定抛出了某种异常。

集合

在这里插入图片描述
(其中单列、双列理解为:单独数据,数据对)

  • List允许集合元素重复,作为接口,通过其子类ArrayList,LinkedList实例化
    ArrayList 类似数组,查找快,增删元素慢
    LinkedList类似链表,查找慢,增删快 ,实现了List和Deque接口,Deque是支持两端元素插入和移除的线性集合,名称deque是“双端队列”的缩写,通常发音为“deck”。(做算法题要用到栈或者队列工具,都采用Deque)

  • Set不允许集合元素重复,作为接口,通过其子类HashSet、TreeSet 实例化。
    HashSet 底层数据结构是哈希表,没有带索引的方法,集合中元素顺序不作保证,但保证不含重复元素。不能使用普通for循环遍历,但可以通过迭代器或者增强for遍历。HashSet保证元素唯一性是通过 hashCode() 和 equals() 方法实现的。

    LinkedHashSet 可以保证元素唯一并有序(指按存储顺序排序)

    TreeSet 中元素唯一且有序,但不是根据元素存储顺序,而是根据构造方法的比较器进行排序,无参构造默认按元素自然排序进行排序。
    自然排序:就是让元素所属的类实现Comparable< E >接口,重写compareTo(T o)方法,重写方法时要注意排序规则的主要和次要条件。

//无参构造,TreeSet内元素所属类实现Comparable<E>接口,并重写compareTo方法
@Override
public int compareTo(Student stu) {
//按年龄升序排列,年龄相同按姓名字典序升序
    int num = this.age - stu.age;  
    num = num == 0 ? this.name.compareTo(stu.name) : num;
    return num;
}

//带参构造TreeSet
TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {//比较器
     @Override
     public int compare(Student o1, Student o2) {
         int num = o1.getAge() - o2.getAge();
         num = num == 0 ? o1.getName().compareTo(o2.getName()): num;
         return num;
     }
});
  • Map ( Interface Map<K,V>)
    将键映射到值;不能包含重复的键;每个键可以映射到最多一个值。
    具体的实现类HashMap,常用方法可在帮助文档中查看。

  • 可变参数
    可变参数指的是参数个数可变,用 数据类型 + … 的形式定义参数,需要注意的是,当方法中包含可变参数和其他参数时,要把其他参数写在前面。

public class Demo {
    public static void main(String[] args) {
        System.out.println(sum(1,2,1,3,1));
    }

    public static int sum(int... a) { //a其实是一个数组
        int sum = 0;
//        for (int i = 0; i < a.length; i++) {//这样写也是可以的
//            sum += a[i];
//        }
        for(int i : a) {
            sum += i;
        }
        return sum;
    }
    
    public int test1(int a, int... b) { 
        return 0;
    }
    
    public int test2(int... a, int b) { //编译错误
        return 0;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值