A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 664322624 初级黑马   /  2018-4-14 16:18  /  507 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-4-20 11:30 编辑

【石家庄校区】课上总结


  • Object

    • 是所有类的根类, 所有类默认都直接或间接的继承自它
    • 成员方法:

      • String toString(): 返回对象的字符串表示方式

        • 重写toString()的作用: 改变对象的字符串显示方式


      • boolean equals(Object o): 比较两个对象是否"相等"

        • Object类中实现方式: ==, 比较对象的地址值是否相同
        • 重写equals()方法: 改变比较的规则. 可以直接生成



    • 获取字节码的3种方式

      • Class 对象.getClass()
      • 类名.class
      • Class Class.forName("类的全名")


    • 类的字节码对象注意点:

      • 同一个类的字节码对象只有一个, 地址值也是相同的
      • 区分Class和class, 前者是类, 后者是关键字



  • System类

    • java.lang包下, 不用导包
    • 常用静态方法

      • static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制数组
      • static long currentTimeMillis(): 返回当前系统时间的毫秒值, 从1970-01-01 00:00:00
      • static void exit(int status): 终止虚拟机的运行. 传入0是正常退出, 非0是异常退出



  • Date类

    • 注意导包: java.util.Date
    • 表示特定的瞬间
    • 构造方法

      • Date Date(): 创建Date对象, 并表示当前系统时间
      • Date Date(long timestamp): 创建Date对象, 使用指定的时间


    • 成员方法

      • String toLocalString(): (已过时)转换为本地时间格式的字符串
      • void setTime(long time): 设置Date对象的时间
      • long getTime(): 获取Date对象中保存的时间毫秒值.



  • SimpleDateFormat类

    • 作用:

      • String转Date
      • Date转String


    • 构造方法

      • SimpleDateFormat(String pattern): 创建SimpleDateFormat对象, 并设置指定的格式


    • 常用2个成员方法

      • String format(Date date): 格式化Date对象返回字符串
      • Date parse(String source): 将字符串解析为Date对象

        • 字符串必须符合模式, 否则抛出异常



    • 常用日期模式

      • y: 年
      • M: 月
      • m: 分
      • D: 年中的天
      • d: 月中的天
      • H: 小时(24小时制)
      • K: 小时(12小时制)
      • S: 毫秒
      • s: 秒
      • E: 星期



  • Calendar类

    • 替代Date类
    • 创建对象

      • static Calendar getInstance(): 获取日历对象


    • 静态字段: 表示时间的某个部分

      • Calendar.YEAR: 年份
      • Calendar.MONTH: 月份. 注意月份数值是0-11
      • Calendar.DAY_OF_MONTH: 日期
      • Calendar.HOUR: 小时(12小时制)
      • Calendar.HOUR_OF_DAY: 小时(24小时制)
      • Calendar.MINITE: 分钟
      • Calendar.SECOND: 秒


    • 成员方法

      • get(时间字段): 获取指定的时间部分
      • set(时间字段, 指定数值): 使用指定数值设置指定的时间部分
      • add(时间字段, 增加的时间值): 根据时间字段的单位增加指定的时间值, 如时间字段是天, 增加n天, 时间字段是秒, 增加n秒. 减少用负数



  • 包装类

    • 作用:

      • 封装了基本数据类型的类, 提供了更多了方法和变量
      • 把基本数据类型的使用方式转换为面向对象的使用方式


    • 基本数据类型和引用数据类型的对应关系

      • byte: Byte
      • short: Short
      • char: Character
      • int: Integer
      • long: Long
      • float: Float
      • double: Double
      • boolean: Boolean


    • Integer类的转换方法

      • int转Integer: Integer Integer(int value)
      • String转Integer: Integer Integer(String s)
      • Integer转int:

        • int intValue(): 将Integer对象的值转换为int类型


      • String转int:

        • static int parseInt(String s): 将字符串转换为int
        • static Integer valueOf(String s)


      • int转String

        • "" + int
        • Integer对象的toString()方法
        • static String toString(int i): 将int转换为String



    • 包装类是引用类型, 所以默认值是null
    • 自动装箱

      • 基本数据类型可以自动转换为包装类
      • 举例: Integer i = 10; 相当于 Integer i = new Integer(10);或Integer i = Integer.valueOf(10);


    • 自动拆箱

      • 包装类可以自动转换为基本数据类型
      • 举例: int a = i.intValue();


    • 自动装箱拆箱的应用场景

      • 集合存储基本数据类型就是自动装箱, 本质上集合中存储的都是引用数据类型



  • 正则表达式


    • 概念: 一种用于匹配字符串的规则
    • String类

      • boolean matches(String regex): 是否匹配指定的正则
      • String[] split(String regex): 按照正则表达式分割字符串


    • 转义:

      • 转义使用\, 正则中有的字符需要转义(. + - *, 预定义字符要写两个斜杠)


    • 常用规则(查看API中的Pattern类)


      • 字符:

        • x: 一个字符x
        • \\: 表示\反斜杠.

          • 为什么有2个? 第一个\是转义的作用


        • [abc]: a或b或c, 即中括号字母中的其中一个
        • [^abc]: 除a, b, c之外的任何字符.

          • ^表示否定


        • [a-zA-Z]: 小写英文a到z, 以及大写英文A到Z.

          • -表示范围



      • 预定义字符

        • .: 任何字符(对于行结束符, 可能匹配, 也可能不匹配)
        • \d: 数字0-9. 相当于[0-9]

          • d是digital的缩写


        • \D: 非数字. 相当于[^0-9]
        • \s: 空白字符. 相当于[ \t\n\x0b\f\r], 包括空格(第一个空就是空格)

          • s是space的缩写


        • \S: 非空白字符. 相当于[^\s]
        • \w: 单词字符. 相当于[a-zA-Z_0-9]

          • w是word的缩写


        • \W: 非单词字符. 相当于[^\w]


      • Greedy数量词


        • X?: X这个字符出现一次或零次
        • X*: X这个字符出现零次或多次, 包括一次
        • X+: X这个字符出现一次或多次
        • X{n}: X这个字符恰好出现n次
        • X{n, }: X这个字符至少出现n次
        • X{n, m}: X这个字符至少出现n次, 但不超过m次






Day 06 :


  • 集合

    • 包含了不同的实现类, 向上抽取出了很多共性的接口, 形成了一个体系结构


  • 数据结构

    • 数据的组织和存储方式


  • 迭代器

    • 作用: 遍历集合
    • 并发修改异常:

      • 原因: 迭代集合时改变了集合的长度
      • 解决:

        • 不使用迭代器
        • 使用迭代器对象中的修改方法




  • 泛型

    • 作用:

      • 约束集合中元素的数据类型
      • 将运行时发生的类型转换异常提前到了编译时期



  • 遍历集合的3种方式

    • 普通for循环
    • 迭代器
    • 增强for循环

      • 优点: 快速简便的遍历集合元素
      • 缺点: 不能在遍历过程中修改集合, 也没有索引可以使用



  • 常见的数据结构


    • 数组

      • 特点:

        • 长度一旦确定则不可改变
        • 有整数索引
        • 只能存储同一个数据类型的元素
        • 既能存储基本数据类型, 又能存储引用数据类型
        • 增删慢, 查询快



    • 链表

      • 特点:

        • 增删快, 查询慢




      • 特点: 先进后出, FILO


    • 队列


      • 特点: 先进先出, FIFO







Day 07 :

  • Set

    • Set是一个接口, 继承自Collection接口
    • Set特点

      • 元素无序(存入和取出顺序不一样)
      • 元素不能重复(元素唯一)
      • 没有索引


    • HashSet类

      • 是Set接口的实现类
      • 方法

        • boolean add(E e): 添加成功返回true; 添加失败(重复了)返回false


      • 保证元素唯一性的原理(hashCode()方法和equals()方法)

        • HashSet的add()方法, 首先使用当前集合中的每一个元素和新添加的元素进行hash值比较
        • 如果hash值不一样, 则不重复, 直接添加新元素
        • 如果hash值一样, 则继续比较地址值或使用equals方法进行比较
        • 如果比较结果一样, 则认为重复, 不添加
        • 如果for循环所有比较都不一样, 则不重复, 添加元素


      • 如何让自定义对象去重?

        • 重写hashCode()和equals()方法




  • Collections工具类

    • 作用: 提供Collection类的一些工具方法
    • 静态方法

      • static int binarySearch(List list, T key): 使用二分查找来查找元素在指定列表的索引位置
      • static void copy(List dest, List src): 将源列表中的数据覆盖到目标列表

        • 注意: 目标列表的长度至少等于源列表的长度


      • static void fill(List list, Object obj): 使用指定对象填充指定列表的所有元素
      • static void reverse(List list): 反转集合中的元素
      • static void shuffle(List list): 随机打乱集合中元素的顺序
      • static void sort(List list): 将集合中的元素按照元素的自然顺序排序

        • 自然顺序: 元素要具有比较性


      • static void swap(List list, int i, int j): 将指定列表中的两个索引进行位置互换



  • Map接口

    • Map<K, V>是接口, 是双列集合的顶层
    • Map的特点

      • 存储方式是key-value(键值对)方式, 即一个键对应一个值
      • 每个键只能映射一个值
      • Map中的键不能重复, 值可以重复
      • key是无序的


    • Map和Collection的区别

      • Map是双列集合, 用于处理有对应关系的数据, key不能重复且无序
      • Collection是单列集合, 有不同的子体系, 有的允许重复且有序, 有的不允许重复且无序


    • 创建对象

      • Map<K, V> map = new HashMap<>(); 多态
      • HashMap<K, V> map = new HashMap<>(); 正常


    • 方法

      • V put(K key, V value): 添加键值对
      • V get(Object key): 通过指定键获取值
      • int size(): 获取集合长度
      • containsKey(Object key): 是否包含指定的键
      • containsValue(Object value): 是否包含指定的值
      • boolean isEmpty(): 是否为空
      • void clear(): 清空集合
      • V remove(Object key): 删除指定键的值(key和value都会删除)
      • Set<Map.Entry<K, V>> entrySet(): 获取键值对的Set集合
      • Set<K> keySet(): 获取所有键的Set集合
      • Collection<V> values(): 获取所有值得Collection集合


    • Map遍历的2种方式

      • 方式1:

        • map.keySet()获取key的Set集合
        • 遍历Set集合获取每一个key
        • 通过map.get(K key)获取value


      • 方式2:

        • map.entrySet(K,V)获取Entry<K,V>的Set集合
        • 遍历Entry的Set集合, 得到一个Entry对象
        • 调用Entry对象的getKey()获得key, 调用Entry对象的getValue()获取value




  • 可变参数


    • 原理: 底层是根据参数长度创建的数组(JVM操作)
    • 格式: 形参数据类型... 形参名
    • 注意事项:

      • 可变参数的数量可以从0个到多个
      • 可变参数只能是一种数据类型
      • 可变参数的定义位置必须在方法形参列表的最后一个


    • 如何使用可变参数: 把可变参数的形参名作为一个数组变量名, 遍历获取元素






Day 08 :


  • 异常

    • 概念: 不正常的情况, 是代码编译或运行时发生的错误
    • 异常的集成体系:

      • java.lang.Throwable(最顶层)

        • Error: 不应该试图捕获的异常
        • Exception: 可以处理的异常(编译时异常, 除了运行时异常)

          • RuntimeException: 运行时异常




    • 异常的分类

      • 编译时异常: 编译时就发生的异常. 必须在编译时期处理
      • 运行时异常: 编译时正常, 运行时发生的异常. 自己选择是否处理


    • 自定义异常

      • 自定义编译时异常: 继承Exception类, 重写构造方法
      • 自定义运行时异常: 继承RuntimeException, 重写构造方法


    • 异常的处理方式

      • JVM默认的异常处理方式

        • 把异常信息打印到控制台, 终止程序的运行, 发生异常之后的代码都不会执行


      • 手动处理异常的方式(2种)

        • 捕获异常: try catch

          • try catch格式(见下方)
          • 多异常的处理

            • catch代码块的顺序

              • 如果多个异常没有继承关系, 顺序无所谓
              • 如果多个异常有继承关系, 子类异常在上, 父类异常在下



          • 捕获异常的执行逻辑

            • 如果try代码块中发生异常, 则会从发生异常的代码直接跳转到catch语句中


          • finally

            • 是一个关键字, 与final区分
            • 作用: 与try catch配合, 无论是否发生异常, 无论是否捕获异常, 都会执行finally代码块
            • 应用:

              • IO流释放资源时, 将close()方法放在finally代码块中




        • 抛出异常:

          • throws:

            • 定义在方法声明上
            • 是处理异常的一种方式, 方法内部不处理, 由方法的调用者处理
            • 格式: 方法声明 throws 异常类型1, 异常类型2 {}


          • throw

            • 用在方法中
            • 制造异常, 抛出一个异常对象
            • 格式: throw new 异常类型构造方法();





    • Throwable常用方法

      • String getMessage(): 获取异常的原因, 没有原因则返回null
      • String toString(): 返回异常的类型和原因
      • void printStackTrace(): 使用标准错误输出流打印异常详情



  • 递归

    • 原理: 将大的问题拆分为小问题, 再将小问题拆分为更小的问题, 解决了最小的问题后, 更大的问题也可以解决, 最终整个问题得到解决
    • 在代码中指的是方法自己调用自己
    • 注意事项

      • 递归必须有出口, 否则内存溢出 StackOverFlowError
      • 递归次数不能太多, 否则也会内存溢出


    • 补充: 递归和循环的相互转换

      • 递归都可以转换为循环实现
      • 循环不一定能转换为递归













0 个回复

您需要登录后才可以回帖 登录 | 加入黑马