黑马程序员技术交流社区

标题: 【就业班笔记】01-API&&02-Collection接口及泛型 [打印本页]

作者: tianhaolin    时间: 2018-11-14 14:56
标题: 【就业班笔记】01-API&&02-Collection接口及泛型
本帖最后由 tianhaolin 于 2018-11-14 14:58 编辑

01-API
  1.Object类
        1)toString:
          *看一个类是否重写toString方法,直接打印这个类对应对象的名字即可
  2.日期类
        1)Date:
          *导包:java.util和java.sql包,当前使用util包
          *是long、String转换的桥梁
        2)DateFormat类(abstract类)和SimpleDateFormat类(子类)
          *格式化(也就是日期—>文本) String format(Date date) 把Date类转换成符合模式的字符串
          *解析(也就是文本—>日期)   Date parse(String source) 把符合模式的字符串,解析为日期
          *常用模式:"yyyy-MM-dd HH:mm:ss"
                     "yyyy年MM月dd日 HH时mm分ss秒"
       3)Calendar(日历类)
           *Calendar类无法直接创建对象使用,里面有个静态方法叫做getInstance();,返回Calendar的子类对象
        4)日期类总结:
           *Date <——> long  
              Date——>long  long getTime();
              long——>Date  new Date(long millis);
          *Date <——> String
              Date——>String SimpleDateFormat类 String format(Date d) 方法
              String——>Date SimpleDateFormat类 Date parse(String str)方法
          *Date <——> Calendar
              Date——>Calendar  void setTime(Date d)
              Calendar——>Date  Date getTime();
3.System类
        1)currentTimeMillis方法
           *一般用来测试程序的效率,开始之前获取一次,结束后获取一次
        2)arrayCopy方法
  4.String拼接
        1)StringBuilder-又被称为字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
          *使用字符串相加,内存中会有多个字符串,效率低下
          *StringBuilder在内存中始终是一个数组Byte[16],如果超出了容量会自动扩容
          *链式调用(append方法):方法的返回值是一个对象,可以根据对象继续调用方法
             new StringBuilder.append("abc").append(true).append(8.8).append("中").appd(....)
          *toString方法
        2)StringBuffer-在多线程情况下StringBuffer更加安全
5.包装类:       基本数据类型的数据,使用起来非常方便,但是没有对应的方法来操作这些数据;
       所以我们可以使用一个类,把基本类型的数据包装起来,这个类叫包装类;
       在包装类中可以定义一些方法,用来操作基本类型的数据。
        1)装箱与拆箱
         *JDK1.5后自动拆装箱
         *自动装箱:例 Integer in = 1
         *自动拆箱:例 in += 2
            in是包装类,无法直接运算,可以自动转换为基本类型的数据再参与计算4
                自动拆箱后自动装箱
         *自动拆装箱可能会引起空指针异常,要注意!
        2)基本数据类型与字符串之间的转换
          *基本类型——>字符串:基本类型+""(常用)/String.valueOf()/包装类.toString();
          *字符串——>基本类型 包装类的静态方法parseXXX("字符串);

02-Collection
  学习目标:1.学会使用集合存储数据2.会遍历集合3.掌握每种集合的特性
  学习方式:1.学习顶层:学习顶层(接口/抽象类)共性的方法
                    2.使用低层:顶层不是接口就是抽象类,需要实现类来实现
  1.接口概述(从上到下)
    1)Collection接口
          *定义的是所有单列集合中共性的方法
          *所有单列集合都可以使用
          *不含带索引的方法
    2)List接口 extends Collection接口
      *有序的集合(存储元素和取出元素的顺序一致)
          *允许重复的元素
          *有索引,包含一些带索引的方法
        3)Set接口 extends Collection接口
          *不允许重复元素
          *没有索引,不包含带索引的方法
  2.Collection接口
      增删改查
3.Iterator迭代器
    1)常用的两个方法:hasNext()/next();用来遍历集合
        2)迭代器实现类
          *获取实现类对象:Collection接口中的方法iterator(),返回值是迭代器的实现类对象
          *迭代器的使用步骤
             **获取迭代器的实现类对象
                 **用hasNext()方法判断是否到达集合末尾
                 **使用next()方法获取下一个元素
          *迭代器的并发修改异常
            在使用迭代器的过程中修改集合长度,会引发跌大气的并发修改异常
                在使用迭代器遍历时不要修改集合长度
          *迭代器并发修改异常的解决方法(了解)
            Iterator接口有一个子接口ListIterator(只有List接口下面的集合可以使用)
                ListIterator接口中定义了add方法和remove方法,可以对集合添加/删除元素
                使用ListIterator接口中的add/remove方法对集合添加/删除元素,那么迭代器自己添加/删除的,就不会抛出异常
                获取ListIterator实现类对象需要List对象(Collection 向下转型为List)
   4.增强for循环

02-泛型
  泛型是一种位未知的数据类型,可以看做一个“变量”,用来接收数据类型
1.泛型的定义
         *<E>:声明了一个泛型(看做是声明了一个“变量”)
         *E:使用E这种类型作为数据类型(泛型只可以使用引用类型)
  2.泛型的好处
        *避免了转换的麻烦
         *将运行时的类型转换异常,提前到了编译时期
3.泛型的定义
        1)含有泛型的类
          *修饰符 class 类名称<泛型>
        2)含有泛型的方法
          *修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){方法体;}
        3)含有泛型的接口
          *修饰符 interface 接口名<泛型>
          *实现类实现了泛型接口后的选择
                定义实现类时确定泛型的具体类型: public class A implements Generic<String>
                定义实现类时仍沿用泛型,直到创建对象 public class A<I> implements Generic<I>
        4)泛型通配符
          *<?>代表的是任意的数据类型,是已经定义了的泛型
          *通配符不能创建对象使用,只能作为方法的参数使用
          *通配符的下限限定:<? super 类名称>
          *通配符的上限限定:<? extends 类名称>








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2