蓝桥杯刷题情况:
Java学习情况:
集合:
进一步了解其他单列集合的作用以及双列集合的学习
————
单列集合:
HashSet类:
1:不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。
2:hashset不是同步的,多线程访问同一个hashset的时候,必须通过代码实现同步
3:集合元素的值可以是null
底层:通过hash算法计算添加元素的hash值,判断其是否相等(判断标准:hash值和通过equals方法俩者)从而决定元素的存储位置。
————
TreeSet类:
集合元素都处于排序状态(排序方法分俩种:定制排序和自然排序)
自然排序:compareTo(Object obj)方法来比较元素之间的大小,按升序排列。
定制排序:通过接口Comparator接口的帮助(改成降序排列),如果定制排序,则需要提供一个Comparator对象与Treeset集合关联,Comparator对象负责集合元素的排序逻辑,
底层:采用红黑树的数据结构来存储集合元素。
————
EnumSet类:
集合中的元素必须枚举类型的枚举类型,EnumSet的集合元素有序的,EnumSet以枚举值在Enum类内的定义顺序来决定集合元素的顺序。
————
HashSet类,TreeSet类,EnumSet类的线程都是不安全。
双列集合的特点:
1:双列集合一次需要存一对数据,分别为键和值
2:键不能重复,值可以重复;
3:键和值是一一对应,每一个键只能找到自己对应的值
4:键+值这个整体 我们称之为“键值对”或者“键值对对象,在java中叫做Entry对象”
———————
Map是双列集合的顶层接口,它的功能所有双列集合都可以使用
Map的遍历方式有三种:
键找值,键值对,lambda表达式
————
HashMap类:
与HashSet集合不能保证元素的顺序一样,HashMap也不能保证键值对的顺序,类似于HashSet判断俩个key之间相等标准是:俩个key通过equals方法比较返回true,俩个key的的hashcode值也相等。
————
TreeMap类:
TreeMap就是一个红黑树数据结构,每个键值对作为红黑树的一个节点,存储元素的时候根据键进行对节点的排序。
同样有自然排序和定制排序。
泛型:
java集合有个缺点,一个对象进入集合之后,集合会忘记这个对象的数据类型,当再次取出这个对象的时候,这个对象的编译类型就变成了Object类型(运行时类型没变)
泛型的出现允许程序在创建集合时指定集合元素类型的对象,这保证了在添加元素进入集合的时候,会对这个元素的类型和指定元素一致。
————
泛型就是编写模板代码来适应任意类型;
泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查;
————
泛型的细节:
1:泛型中不能写基本数据类型,只能传引用类型
2:指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型(但传入子类类型的情况很少,一般只传入该类类型)
3:如果不写泛型,类型默认为Object
————
泛型可以在很多地方定义:类,方法,接口。
泛型类:当某个数据变量不确定的时候,就可以定义泛型类;
格式;
public class Preson <E>{ //修饰符 class 方法名 <E>{} //在创建对象的时候确定类型:Person<String>=new Person<>(); }
————
泛型方法:方法中形参列表的类型不确定的时候;
有俩种方案:
1:可以使用类名后面定义的泛型(所有方法都可以用)
格式:和泛型类一样
2:在方法名之后定义属于这个方法的泛型(只有本方法可以用)
格式:
public class Preson { public <E>void show(){ //修饰符 <E> 返回类型 方法名() }
—————
泛型接口:
@FunctionalInterface public interface Swim1<E> { //修饰符 interse 接口名 <E> public abstract void swim(); }
1:实现类给出具体类型
格式:
public class TestInterface implements Swim1<String>{ @Override public void swim() { }
2:实现类延续泛型,到创建类的时候再确定
格式:
public class TestInterface<E> implements Swim1<E>{ @Override public void swim() { }
异常处理:
异常处理稍微入门了一下
error:代表的系统级别错误(属于严重问题)
系统一旦出现问题,sun公司会把这些错误封装成error对象,error是给sun公司用的,不是给我们程序员用的(因此我们不用管)
Exception:异常:
代表程序可能出现的问题,我们通常会用Exception以及它的子类来封装程序出现的问题。
异常分为俩类:
1:运行时异常:
RuntimeException及其子类,编译阶段不会出现异常问题提醒,运行时出现的异常
(如:数组索引越界异常)
2:编译时异常:
编译阶段就会出现异常提醒(如:日期解析异常)异常最上层分类是Exception。
编译阶段,java不会运行代码,只会检查语法,和做一些代码上的优化.
总结:明日计划,异常处理学习完,MySQL和JDBC编程章节入门,java学习过程中敲代码还是太少了,蓝桥杯备战抓紧,fx页面跳转学习。