黑马程序员技术交流社区

标题: 【石家庄校区】随堂笔记 [打印本页]

作者: 养只猫叫冰棍儿    时间: 2018-11-14 16:15
标题: 【石家庄校区】随堂笔记
本帖最后由 小石姐姐 于 2018-11-16 11:55 编辑

随堂笔记
<Object和API>


java.lang.Object类: 根类, 所有类的父类

// 成员方法
String toString() :返回该对象的字符串表示
boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"
java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
// 静态方法
static boolean equals(Object a, Object b): 比较两个对象是否相等
  如果2个参数都是null, 返回true
  如果其中一个为null, 返回false
  如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较
java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
// 构造方法
Date(): 创建Date对象, 表示当前系统时间
Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
// 常用成员方法
long getTime(): 获取Date对象中保存的时间毫秒值
void setTime(long time): 修改Date对象的时间
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
// 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
String format(Date date): 格式化, 从Date对象转换为String对象
Date parse(String source): 解析, 从String对象转换为Date对象

java.text.SimpleDateFormat类
// 构造方法
SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
// 静态方法
static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
// 静态成员变量
static int YEAR         :年份
static int MONTH        :月份. 注意月份数值是 0-11
static int DAY_OF_MONTH :日期
static int HOUR         :小时(12小时制)
static int HOUR_OF_DAY  :小时(24小时制)
static int MINITE       :分钟
static int SECOND       :秒
// 非静态成员方法
int get(int field): 获取指定日历字段的值
void set(int field, int value): 修改指定日历字段为指定的值
void set(int year, int month, int date): 快速设置年月日
void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
Date getTime(): Calendar转Date
void setTime(Date d): Date转Calendar

java.lang.System类: 系统相关功能
// 静态方法
static long currentTimeMillis(): 返回当前系统时间的毫秒值
static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中
        * Object src: 源数组 (被复制的数组)
        * int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
        * Object dest: 目标数组 (要复制到哪个数组)
        * int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
        * int length: 长度 (要复制的元素个数)
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
// 构造方法
StringBuilder(): 构造一个空的StringBuilder容器
StringBuilder(String str): String转StringBuilder
// 常用方法
StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
String toString(): 将当前StringBuilder对象转换为String对象

基本类型转为String:
1. 拼接空字符串:
  String s = "" + 34
2. 每个包装类中的静态方法 static String toString(参数):
  String s = Integer.toString(10);
3. String类中的静态方法 static String valueOf(参数):
  String s = String.valueOf(10);

String转基本类型: 利用包装类的静态方法
    static byte parseByte(String s): 将字符串参数转换为对应的byte基本类型
    static short parseShort(String s): 将字符串参数转换为对应的short基本类型
    static int parseInt(String s): 将字符串参数转换为对应的int基本类型
    static long parseLong(String s): 将字符串参数转换为对应的long基本类型
    static float parseFloat(String s): 将字符串参数转换为对应的float基本类型
    static double parseDouble(String s): 将字符串参数转换为对应的double基本类型
    static boolean parseBoolean(String s): 将字符串参数转换为对应的boolean基本类型
    注意: 没有转char的!!

<泛型>
java.util.Collection<E>接口:
// 成员方法(子类都会实现)
boolean add(E e): 把给定的对象添加到当前集合中
void clear(): 清空集合中所有的元素
boolean remove(E e): 把给定的对象在当前集合中删除
boolean contains(E e): 判断当前集合中是否包含给定的对象
boolean isEmpty(): 判断当前集合是否为空(没有元素)
int size(): 返回集合中元素的个数
Object[] toArray(): 把集合中的元素,存储到数组中
Iterator<E> iterator(): 获取集合的迭代器对象

java.util.Iterator<E>接口: 迭代器
// 成员方法
boolean hasNext(): 判断是否有下一个元素
E next(): 获取下一个元素
void remove(): 删除调用完next()指向的元素

java.util.Collections工具类
// 静态方法

static void shuffle(List<?> list): 随机打乱集合中元素的顺序


测试Collection接口的方式:
使用多态方式创建对象: Collection c = new ArrayList();
编译看左边, 这样只能调用Collection接口中定义的方法, 不会出现子类特有方法

在使用迭代器迭代的过程中, 如果执行了改变集合长度的操作 (如 add(), remove(), clear()), 则会抛出 ConcurrentModificationException 并发修改异常.
如何避免:
1. 迭代过程中不要修改集合长度
2. 在迭代的过程中添加, 删除元素, 要使用迭代器自带的方法, 而不能使用集合的方法
  Iterator中的 remove() 方法
  ListIterator中的 add(), remove() 方法


增强for, 普通for, 迭代器的区别:
增强for:
  优点: 获取元素很方便, 格式简单
  缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删
  应用场景: 适用于遍历获取数组和集合元素的场景
普通for:
  优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素
  缺点: 格式繁琐
  应用场景: 需要用到索引的场景
迭代器:
  优点: 可以使用迭代器对象的方法操作元素
  缺点: 格式繁琐
  应用场景: 需要在迭代过程中增删元素的场景








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