本帖最后由 yangxiaoqiang 于 2018-11-14 16:50 编辑
一: 常用API
1:object类:
object是所有类的父类; 特点: 所有类的对象都可以使用object类中定义的方法;
①toString方法: 返回对象的字符串; 快捷键: Alt + Insert, 选择 toString() , 全选
看一个类是否重写了toString方法,直接打印类的对象,如果没有返回的是对象的地址值
②equals方法: 比较两个对象是否相等; 快捷键: Alt + Insert, 选择 equals() and hashCode(), 全选
String类中的equals方法与Object类中的equals方法的不同点
String类比较的是两个对象的内容是否相同, Object类是比较两个对象是否在同一个存储空间.
2:Date类:
Data类是表现日期和时间的类; 表示特定的瞬间,精确到毫秒
时间原点: 1970年1月1日00:00:00; 注意:中国是东八区,时间原点要增加八小时
换算: 1秒 等与 1000毫秒
// 换算示例(以0时区为例)
1970-01-01 00:00:00.000 = 0 毫秒
1970-01-01 00:00:00.500 = 500 毫秒
1970-01-01 00:00:01.000 = 1000 毫秒
1970-01-01 00:01:01.000 = (1000 * 60) + 1000 毫秒
1970-01-01 01:01:01.000 = (1000 * 60 * 60) + (1000 * 60) + 1000 毫秒
getTime(): 获取Date对象中保存的时间毫秒值
setTime(long time): 修改Date对象的时间
3:DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,要使用它的子类SimpleDateFormat
String format(Date date): 把Date对象转换成String类型对象
SimpleDateFormat对象的模式是: "yyyy年MM月dd日 HH:mm:ss"
将Date格式化后就可以是这种样子: 2018年01月02日 03:04:05
Date parse(String source):把String对象转换成Date类型对象
SimpleDateFormat对象的模式是: "yyyy-MM-dd"
Date对象的字符串必须符合模式: 2000-01-02
SimpleDateFormat: 创建一个格式的对象
常用的时间:
y: 年 M: 月 d: 日 H: 时 (24小时制) m: 分 s: 秒 E: 星期
D: 年中的天 K: 小时(12小时制) S: 毫秒
示例: "yyyy-MM-dd E HH:mm:ss.SSS"
结果: 2016-04-01 星期五 17:29:15.868
4 :Clendaar类
Clendaar类是一个抽象类,代表日历, 不能直接new,
Calendar c = Calendar.getInstance();
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 :秒
5:System类
①currentTimeMillis() : 返回当前系统时间的毫秒值
②arrayCopy() : 复制源数组中指定长度元素到一个新数组中
* Object src: 源数组 (被复制的数组)
* int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
* Object dest: 目标数组 (要复制到哪个数组)
* int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
* int length: 长度 (要复制的元素个数)
6:StringBuilder类
作用: 可以提高字符串的操作效率,节省占用空间
StringBuilder(): 构造一个空的StringBuilder容器
StringBuilder(String str): String转StringBuilder
StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
二: Collection 泛型笔记
1:Collection 接口 : 单列集合的顶层
List接口: 元素存取有序, 可重复, 有索引
Set接口: 不可重复, 无索引
常用功能: Collection<String> coll = new ArrayList<>();
boolean add(E e): 把给定的对象添加到当前集合中
void clear(): 清空集合中所有的元素
boolean remove(E e): 把给定的对象在当前集合中删除
boolean contains(E e): 判断当前集合中是否包含给定的对象
boolean isEmpty(): 判断当前集合是否为空(没有元素)
int size(): 返回集合中元素的个数
Object[] toArray(): 把集合中的元素,存储到数组中
2: 迭代器Iterator接口
迭代:
类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有
使用迭代器遍历集合的标准写法:
Iterator<元素类型> iterator = 集合对象.iterator();
while (iterator.hasNext()) {
元素类型 变量名 = iterator.next();
}
注意事项:
迭代器对象迭代完毕后, 指针已经指向最后一个元素, 没有下一个元素了. 如果想再次从头遍历集合, 要获取新的迭代器对象
迭代过程中不能修改集合长度,否则会发生并发修改异常;
3: 增强for循环
增强for格式:
for(元素的数据类型 变量名 : Collection集合或数组名){ // 操作代码 }
增强for, 普通for, 迭代器的区别:
增强for:
优点: 获取元素很方便, 格式简单
缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删
应用场景: 适用于遍历获取数组和集合元素的场景
普通for:
优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素
缺点: 格式繁琐
应用场景: 需要用到索引的场景
迭代器:
优点: 可以使用迭代器对象的方法操作元素
缺点: 格式繁琐
应用场景: 需要在迭代过程中增删元素的场景
4 : 泛型
泛型: 是一种未知的数据类型
定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型
创建集合对象时, 需要确定泛型具体的类型
泛型的好处:
1. 避免了类型转换的麻烦
2. 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题)
泛型的"定义"和"使用"
泛型在"定义"时, "不能是"具体的类型, 只是一个变量名: public class ArrayList<E> {}
泛型在"使用"时, "必须是"具体的数据类型 ArrayList<Integer>
带有泛型的类定义格式
修饰符 class 类名<代表泛型的名字> { // 泛型的变量一般用一个大写字母表示, 但也可以是多个字母 }
方法中的泛型定义位置:
修饰符 和 返回值类型 之间
// 带有泛型的方法定义格式
修饰符 <代表泛型的名字> 返回值类型 方法名(参数){
}
方法泛型的使用:
"在调用方法时"确定泛型的具体类型
5: 通配符
不知道使用什么类型来接收时, 此时可以使用 <?> 来表示未知通配符
注意: 只能接收数据, 不能调用方法存储元素
List<?> list 这种集合不能调用 add() 添加元素, 只能调用 get() 获取元素
List<?> list 其实是一个变量, 所以可以将一个集合赋值给它
使用方式:
不能创建对象使用
只能作为方法参数使用. (减少方法重载)
泛型的上限:
格式: 类型名称<? extends 类名> 对象名称
示例: List<? extends Number> list
作用: 只能接收泛型为该类型及其子类的对象 (Number及其子类的泛型)
泛型的下限:
格式: 类型名称<? super 类名> 对象名称
示例: List<? super Number> list
作用: 只能接收泛型为该类型及其父类型的对象 (Number及其父类的泛型)
java.util.Collections工具类
// 静态方法
static void shuffle(List<?> list): 随机打乱集合中元素的顺序
|
|