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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dyynrahbsqt 中级黑马   /  2018-11-14 16:07  /  531 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-11-16 11:59 编辑

day01 Object类 常用API :

Object类Object类概述
1.java.lang.Object类: 根类, 所有类的父类
        // 成员方法
        String toString() :返回该对象的字符串表示
        boolean equals(Object obj) :指示其他某个对象是否与此对象"相等";
2.Object类的特点:
        是所有类的父类, 任何一个类都直接或间接地继承自Object类, 并可以使用Object类中定义的方法
        一个类如果没有指定继承某个父类, 则默认继承Object类
Object类之toString方法
public String toString() :返回该对象的字符串表示
作用:
         任何类的对象都可调用toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式
          如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容
           一般我们都要输出JavaBean的属性名和属性值, Alt + Insert 选择 toString() 即可重写
Object类之equals方法
public boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"
重写equals()的作用:
        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
        但开发时, 一般要重写equals()方法, 让对象根据属性值来判断是否相等
IDEA快捷键: Alt+Insert, 选 equals() and hashCode()
java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
        // 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        // 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间
3.DateFormat类及其构造方法
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
        // 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
        String format(Date date): 格式化, 从Date对象转换为String对象
        Date parse(String source): 解析, 从String对象转换为Date对象
DateFormat类之格式化format方法
String format(Date date): 格式化, 从Date对象转换为String对象
DateFormat之解析parse方法
Date parse(String source): 解析, 从String对象转换为Date对象
4.StringBuilder常用方法
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 常用方法
        StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
        String toString(): 将当前StringBuilder对象转换为String对象
补充:
String和StringBuilder互转: 利用StringBuilder
        StringBuilder(String str): String转StringBuilder
        String toString(): StringBuilder转String



day02 Collection 泛型笔记:

Collection集合概述
集合: 长度可变容器, 可以存储多个对象
集合和数组的区别:
        1. 数组长度不可变; 集合长度可变
        2. 数组可以存基本类型或引用类型, 只能存同一种类型; 集合只能存储引用类型元素, 可以是多种类型元素
集合框架介绍:
Collection接口: 单列集合顶层
        |_ List接口: 元素存取有序, 可重复, 有索引
        |_ Set接口: 元素存取无序, 不可重复, 无索引
学习顶层: 顶层接口/抽象类中共性的方法, 所有子类都可以使用
        使用底层: 使用底层子类/实现类创建对象
Collection常用功能
java.util.Collection接口:
        // 成员方法(子类都会实现)
        boolean add(E e): 把给定的对象添加到当前集合中
        void clear(): 清空集合中所有的元素
        boolean remove(E e): 把给定的对象在当前集合中删除
        boolean contains(E e): 判断当前集合中是否包含给定的对象
        boolean isEmpty(): 判断当前集合是否为空(没有元素)
        int size(): 返回集合中元素的个数
        Object[] toArray(): 把集合中的元素,存储到数组中
        
        Iterator<E> iterator(): 获取集合的迭代器对象 (后面讲到)
        Iterator接口: 迭代器
        
测试Collection接口的方式:
        使用多态方式创建对象: Collection c = new ArrayList();
        编译看左边, 这样只能调用Collection接口中定义的方法, 不会出现子类特有方法使用迭代器遍历集合的3步:
        1. 使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态)
        2. 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素
        3. 使用 Iterator 接口中的 next() 方法, 获取下一个元素注意事项:
        1. 迭代器对象迭代完毕后, 指针已经指向最后一个元素, 没有下一个元素了. 如果想再次从头遍历集合, 要获取新的迭代器对象
        2. 在使用迭代器迭代的过程中, 如果执行了改变集合长度的操作 (如add(), remove(), clear()), 则会抛出 ConcurrentModificationException 并发修改异常. 如果要在迭代的过程中添加, 删除元素, 要使用迭代器自带的方法, 而不能使用集合的方法。

增强for对于数组和集合的操作:
        对数组只是写法上的优化, 底层还是普通for循环
        对集合是通过迭代器实现的

泛型的好处
不使用泛型的问题:
        集合实际存储的是 Object 类型, 存入的元素无论是什么类型, 都会被提升为 Object, 取出来的也是 Object, 要想调用元素特有方法, 就要向下转型, 有可能发生类型转换异常 ClassCastException

泛型的好处:
        1. 避免了类型转换的麻烦
        2. 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题)
泛型定义总结:
        1.定义在类上的泛型:
                有效范围: 整个类中都有效
                何时确定具体类型: 创建该类对象时确定泛型的具体类型
        2.定义在方法上的泛型:
                有效范围: 方法中(包括返回值类型和参数类型)有效
                何时确定具体类型: 调用方法传参时确定泛型的具体类型
        3.定义在接口上的泛型:
                有效范围: 接口中
                何时确定具体类型:
                        1. 子接口或实现类定义时确定泛型的具体类型
                        2. 创建实现类对象时确定泛型的具体类型
泛型的上限:
        格式: 类型名称<? extends 类名> 对象名称
        示例: List<? extends Number> list
        作用: 只能接收该类型及其子类 (Number及其子类的泛型)

泛型的下限:
        格式: 类型名称<? super 类名> 对象名称
        示例: List<? super Number> list
        作用: 只能接收该类型及其父类型 (Number及其父类的泛型)


0 个回复

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