黑马程序员技术交流社区

标题: 石家庄校区day01、day02笔记整理 [打印本页]

作者: lst168    时间: 2018-11-14 15:56
标题: 石家庄校区day01、day02笔记整理
本帖最后由 lst168 于 2018-11-14 17:23 编辑

day01、day02笔记整理
Object类:

1、Object类的特点:①、Object是类层次的根类,每个类都(直接或间接地)使用Object类座位父类;

②、所有类的对象都可以使用Object类中定义的方法。

2、Object类中toString()方法的作用:任何类的对象都可调用oString(),得到一个对象的字符串表示形式,默认使用Object类中定义的方式,如果不想使用默认方式,子类可以重写toString()方法,转换为自己想要的内容

3、Object类中的 equals() 方法的作用:默认方式是如何比较两个对象是否相等,但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等

日期时间相关的类:

1、Date类:①、构造方法Date():创建对象,表示当前系统时间;Date(long date):创建Date对象,使用制定毫秒值。

②、常用成员方法long getTime():获取Date对象中保存的时间毫秒值;void setTime(long time ):修改Date对象的时间。

2、SimpleDateFormat类:String format(Date date):格式化,从Date对象转换为String对象;

Date parse(String source):解析,从String对象转换为Date对象;                          SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号创建对象。

3、Calendar类:static Calendar getInstance():根据当前系统设置获取合适的Calendar对象,表示当前系统时间,Calendar c = Calendar.getInstance();  代表了当前时间

System 类:

static long currentTimeMillis(): 返回当前系统时间的毫秒值

      static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中

StringBuilder 类:

用加号拼接字符串时String是不可变的,会创建很多额外的对象,浪费内存空间

StringBuilder是可变字符序列,可以高效拼接字符串形式,底层使用数组保存

Collection类:

1、集合和数组的区别:数组长度不可变:集合长度可变;数组可以存基本类型或引用类型, 只能存同一种类型; 集合只能存储引用类型元素, 可以是多种类型元素

2、使用迭代器遍历集合的3步:使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态); 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素; 使用 Iterator 接口中的 next() 方法, 获取下一个元素

3、迭代器的原理:迭代器有一个指针(其实就是个变量, 保存索引值), 最初指向集合的 0 位置;hasNext() 方法可以判断当前索引是否有元素;next() 方法返回当前元素, 并移动指针到下一个索引。

4、增强for, 普通for, 迭代器的区别:

        增强for:

                优点: 获取元素很方便, 格式简单

                缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删

                应用场景: 适用于遍历获取数组和集合元素的场景

        普通for:

                优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素

                缺点: 格式繁琐

                应用场景: 需要用到索引的场景

        迭代器:

                优点: 可以使用迭代器对象的方法操作元素

                缺点: 格式繁琐

                应用场景: 需要在迭代过程中增删元素的场景

泛型:

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

2、泛型的好处:避免了类型转换的麻烦; 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题)

3、泛型定义总结:

        定义在类上的泛型:

                有效范围: 整个类中都有效

                何时确定具体类型: 创建该类对象时确定泛型的具体类型

        定义在方法上的泛型:

                有效范围: 方法中(包括返回值类型和参数类型)有效

                何时确定具体类型: 调用方法传参时确定泛型的具体类型

        定义在接口上的泛型:

                有效范围: 接口中

                何时确定具体类型:

                        子接口或实现类定义时确定泛型的具体类型

                         创建实现类对象时确定泛型的具体类型

4、泛型的上限:

        格式: 类型名称<? extends 类名> 对象名称

        示例: List<? extends Number> list

        作用: 只能接收泛型为该类型及其子类的对象 (Number及其子类的泛型)



泛型的下限:

        格式: 类型名称<? super 类名> 对象名称

        示例: List<? super Number> list

        作用: 只能接收泛型为该类型及其父类型的对象 (Number及其父类的泛型)







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