第五周的学习总结

学习Java的第五周有学习了很多的知识。
Object类:概念:
超类、基类,所有类的直接或间接父类,位于继承树的最顶层。
任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
Object类中所定义的方法,是所有对象都具备的方法。
Object类型可以存储任何对象:
作为参数,可接受任何对象。
作为返回值,可返回任何对象。
常用方法:
public final Class<?> getClass(){}
public int hashCode(){}
包装类的概念转型方法
String:

  1. 概念:
    I. 字符串是常量,创建之后不可改变。
    II. 字符串字面值存储在字符串池中,可以共享。
    III. String s = “Hello”; 产生一个对象,保存在池中
    IV. String s2 = new String(“World”); 产生两个对象,池、堆各一个
    集合:

  2. Collection体系集合:
    I. Collection父接口:该体系结构的根接口,代表一组对象,称为“集合”,每个对象都是该集合的“元素”。
    II. List接口的特点:有序、有下标、元素可重复。
    III. Set接口的特点:无序、无下标、元素不可重复。

  3. List子接口:
    I. 特点:有序、有下标、元素可以重复。
    II. 继承可父接口提供的共性方法,同时定义了一些独有的与下标相关的操作方法。

  4. List实现类:
    I. JDK8的ArrayList,实际初始长度是0
    II. 首次添加元素时,需要实际分配数组空间,执行数组扩容操作
    III. 真正向数组中插入数据,(Lazy懒)用的时候再创建,或再加载,有效的降低无用内存的占用

  5. ArrayList:
    I. 数组结构存储,查询快,增删慢。//注册(1次)-> 查询(N次)
    II. JDK 1.2发布,执行效率快,线程不安全。

  6. Vector:
    I. 数组结构存储,查询快,增删慢。
    II. JDK 1.0发布,执行效率慢,线程安全。

  7. LinkedList:
    I. 链表(链接列表)结构存储,查询慢、增删快。

  8. 泛型集合【重点-解决应用问题】:
    I. 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。
    II. 特点:
    1). 编译时即可检查,而非运行时抛出异常。
    2). 访问时,不必类型转换(拆箱)。
    3). 不同泛型之间引用不能相互赋值,泛型不存在多态。

  9. 泛型:高级类别的知识,熟练应用,需要时间、经验的积累(常用名称:E = Element / T = Type / K = Key / V = Value)
    I. 概念:约束-规范类型
    II. 泛型的场景:
    1). 定义泛型:
    A). 实例泛型:
    a). 类:创建对象时,为类所定义的泛型,进行参数化赋值
    b). 接口:实现接口时,为接口所定义的泛型,进行参数化赋值

B). 静态泛型:
a). 定义在方法的返回值类型前面:、、<T extends Comparable>、<T extends Comparable<? super T>> 可应用在形参列表、返回值两种场景上,不单单可以规范泛型,还可以语义化返回值。
b). 定义在方法的形参列表当中:<?>、<? extends Object>、<? super Integer>,不支持使用& 只能应用在形参列表上,规范泛型。

  1. Collections工具类:
    概念:集合工具类,定义了除了存取以外的集合常用方法。
    I. public static <T extends Comparable<? super T>> void sort(List list) //排序,要求:必须实现Comparable,必须可与自身类型比,以及父类类型比
    II. public static void reverse(List<?> list) //反转、倒置元素
    III. public static void shuffle(List<?> list) //随机重置顺序

经验:一级目标能看懂、能调用,二级目标能定义、能设计

作业:Question_DIfficulty(11、12、13、14),课堂案例(泛型相关、Collections)

  1. Set子接口:
    I. 特点:无序、无下标、元素不可重复(当插入新元素时,如果新元素与已有元素进行equals比较,结果为true时,则拒绝新元素的插入)
    II. 方法:全部继承自Collection中的方法

  2. foreach循环:
    for(数据类型 变量名 : 容器名称){ //可遍历集合或数组(常用在无序集合上)
    }

  3. Set接口实现类:
    I. HashSet【重要】:
    1). HashSet的底层使用的HashMap类,即是将所有需要存入HashSet的值,直接保存在HashMap中
    2). HashSet如何去掉重复?
    3). 先判断hashCode是否一致,==比较地址,equals比较内容

II. LinkedHashSet【了解】:
1). 底层使用LinkedHashMap(链表结构)存储,节点形式单独存储数据,并可以指向下一个节点,通过顺序访问节点,可保留元素插入顺序

III. TreeSet【了解】:
1). 实现了SortedSet接口,要求必须可以对元素排序。
2). 所有插入元素,必须实现Comparable接口,覆盖compareTo方法。
3). 根据compareTo方法返回0作为去重的依据,(意味重复)

  1. Map体系集合:
    I. Map:地图、映射
    I. 概念:存储一对数据(Key-value),无序、无下标、键不可重复、值可以重复。

II. HashMap算法:拿到任何一个对象好,通过hash(key)做运算,key>>>16(除以16),只可能得到0~15之间的一个数组,作为插入数组的下标
III. Hashtable:HashMap的线程安全版本
IV. TreeMap:自动对key做排序,根据compareTo的返回值去重
V. Properties:Hashtable 子类,主要用于存储key和value都是字符串的情况,常在读取配置文件之后,保存文件中的键值对。反射、JDBC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值