常用API1.Object类: toString方法
String toString() : :返回该对象的字符串表示
如果不调用toString方法,直接打印对象时,打印的是对象的地址值
调用toString方法打印的是属性值
快捷键 : Alt + Insert 选择 toString() 即可重写
1.1Object类: equals方法
equals默认的是比较两个对象是否相等;
重写equals()的作用:
不重写时,自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等
快捷键 : Alt+Insert, 选 equals() and hashCode()
2.日期时间相关的类
2.1Date类: 构造方法, 成员方法
// 构造方法
Date(): 创建Date对象, 表示当前系统时间
Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
// 常用成员方法
long getTime(): 获取Date对象中保存的时间毫秒值
void setTime(long time): 修改Date对象的时间
2.2DateFormat类和SimpleDateFormat类
DateFormat抽象类: // 抽象类不能创建对象, 但可以有非抽象的方法供子类使用
用于格式化和解析时间. 提供了方便的方法 ;
String format(Date date): 格式化, 从Date对象转换为String对象
Date parse(String source): 解析, 从String对象转换为Date对象
SimpleDateFormat类 :
SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象
创建对象 :
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format(Date date) : 从Date对象转换为String对象
对象的模式是: "yyyy年MM月dd日 HH:mm:ss"
e格式化后: 2018年01月02日 03:04:05
parse(String source): 从String对象转换为Date对象
对象的模式是: "yyyy-MM-dd"
解析为Date对象的字符串必须符合模式: 2000-01-02
3.Calendar类
3.1获取Calendar对象
Calendar抽象类 : 代表日历, 提供了不同国家的历法, 封装了很多时间属性
static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象,
表示当前系统时间
3.2Calendar类: 常用功能
static int YEAR :年份
static int MONTH :月份. 注意月份数值是 0-11
static int DAY_OF_MONTH :日期
static int HOUR_OF_DAY :小时(24小时制)
4.System类
4.1System类: currentTimeMillis()和arrayCopy()方法
static long currentTimeMillis(): 返回当前系统时间的毫秒值
static void arrayCopy(): 复制源数组中指定长度个元素到一个新数组中
5.StringBuilder类
5.1 StringBuilder原理: 字符串拼接问题
+号拼接字符串的问题: String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间
5.2 StringBuilder: 构造方法和append()拼接方法
StringBuilder(): 构造一个空的StringBuilder容器
StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
链式调用:
new StringBuilder().append(1).append("hello").append(true);
Day - 02
1.Collection
1.1 集合和集合框架
集合: 长度可变容器, 可以存储多个对象
Collection接口: 单列集合顶层
List接口: 元素存取有序, 可重复, 有索引
Set接口: 不可重复, 无索引
1.2 Collection常用功能
boolean add(E e): 把给定的对象添加到当前集合中
void clear(): 清空集合中所有的元素
boolean remove(E e): 把给定的对象在当前集合中删除
boolean contains(E e): 判断当前集合中是否包含给定的对象
boolean isEmpty(): 判断当前集合是否为空(没有元素)
int size(): 返回集合中元素的个数
Object[] toArray(): 把集合中的元素,存储到数组中
测试Collection接口的方式:
使用多态方式创建对象: Collection c = new ArrayList();
2.迭代器
2.1 和迭代步骤
使用迭代器遍历集合的3步:
1. 使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态)
2. 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素
3. 使用 Iterator 接口中的 next() 方法, 获取下一个元素
2.2使用迭代器的代码
Iterator<元素类型> iterator = 集合对象.iterator();
while (iterator.hasNext()) {
元素类型 变量名 = iterator.next();
}
2.3 迭代器的实现原理
迭代器的原理:
hasNext() 方法可以判断当前索引是否有元素
next() 方法返回当前元素, 并移动指针到下一个索引
2.4迭代器的并发修改异常
1. 迭代过程中不要修改集合长度
2. 在迭代的过程中添加, 删除元素, 要使用迭代器自带的方法, 而不能使用集合的方法
Iterator中的 remove() 方法
ListIterator中的 add(), remove() 方法
3.增强for循
作用:
遍历数组
遍历集合
增强for格式:
for(元素的数据类型 变量名 : Collection集合或数组名)
4.泛型
4.1泛型的概述
定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型
创建集合对象时, 需要确定泛型具体的类型
定义:
<E>: 声明了一个泛型 (声明了一个变量)
4.2定义带有泛型的类
修饰符 class 类名<代表泛型的名字>
类中的泛型, "在创建对象时", 确定泛型的具体类型
4.3定义含有泛型的方法
修饰符 <代表泛型的名字> 返回值类型 方法名(参数)
4.4 定义泛型的接口
修饰符 interface 接口名<代表泛型的变量>
4.5泛型通配符
泛型通配符:
不知道使用什么类型来接收时, 此时可以使用 <?> 来表示未知通配符
泛型的上限:
格式: 类型名称<? extends 类名> 对象名称
示例: List<? extends Number> list
作用: 只能接收泛型为该类型及其子类的对象 (Number及其子类的泛型)
泛型的下限:
格式: 类型名称<? super 类名> 对象名称
示例: List<? super Number> list
作用: 只能接收泛型为该类型及其父类型的对象 (Number及其父类的泛型)