本帖最后由 小石姐姐 于 2018-7-26 16:23 编辑
一 常用API 1. Object类,java.long包下,包含11个方法 1.1 Object类是所有类的父类,如自己定义的Helloworld类
1.2 Object方法的多态应用 父类方法不满足时,可以子类重写方法 比如
[Java] 纯文本查看 复制代码 [/size][/font]
[font=微软雅黑][size=3]ArrayList<Integer> list = new ArrayList<>();[/size][/font]
[font=微软雅黑][size=3]list.add(1);
list.add(2);
System.out.println("结果为"+list);//输出: 结果为[1, 2]
System.out.println(Person)//输出为地址值
1.3 常用方法
1.3.1 toString()方法
- 默认格式:
[Java] 纯文本查看 复制代码 public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
} getClass().getName()是类的全路径 - 多态格式(子类重写):详见1.2
1.3.2 equals()方法
- 默认格式: 基本数据类型 直接比较值;引用数据类型比较的是地址值
[Java] 纯文本查看 复制代码 public boolean equals(Object obj) {
return (this == obj);//this obj 地址值
} - 多态格式:String类的equals()方法
[Java] 纯文本查看 复制代码 public boolean equals(Object anObject) {
if (this == anObject) {
return true;//地址值相同直接返回true
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (coder() == aString.coder()) {
return isLatin1() ? StringLatin1.equals(value, aString.value)
: StringUTF16.equals(value, aString.value);//比较的是字节数组
}
}
return false;
}
2. 时间相关类
2.1 Date类 java.uti包下
- 无参构造Data()返回当前时间(对象创建的时间)
- 有参构造Data(long Date) long类型-->Date
- getTime()方法 获取Date对象的时间戳 Date-->long类型
- setTime(long l)方法 改变Date对象的时间戳 long类型-->Date
- Date类型的格式为: Tue Jul 24 15:02:49 CST 2018
2.2 DateFormat类 java.text包下,是抽象类
- 需要子类SimpleDateFormat,实例化并构造格式化标准参数
- 常用格式: y : 年 M : 月 d : 日 H : 小时 m : 分钟 s : 秒 E : 星期 D : 年中的天 K : 小时(12小时制) S : 毫秒 “yyyy年MM月dd日”或“yyyy-MM-dd HH:mm:ss.SSS”
- 格式化 调用子类的format(Date d) Date-->String
- 解析 调用子类的parse(String s) String-->Date
2.3 Calendar类 java.util包下 ,抽象类
- 创建实例化对象 public static Calendar getInstance()方法(静态) 本省定义了获取对象的方法,实际调用的是抽象类CalendarProvider抽像类(外部类)
- 成员变量(静态) EAR MONTH DAY_OF_MONTH HOUR HOUR_OF_DAY MINUTE SECOND DAY_OF_WEEK
- 方法c.get(Calendar.YEAR) 获得成员变量信息
- 方法c.set(Calendar.YEAR,1111) / c.set(Date d) Date-->Calendar
- 方法c.add(Calendar.YEAR,+/- 1) 增减参数信息 注意2月份天数应用
- c.getTime() Calendar-->Date
3. System类 java.long包 静态方法
- currentTimeMillis() 返回以毫秒为单位的当前时间
- arrayCopy(Object src,int srcPos,Object dest ,int destPos,int length) 将数组中指定的数据拷贝到另一数组中
4 StringBuilder类 java.long包下, 解决字符串拼接问题
StringBuilder()
StringBUilder(String s) 将s转换为StringBuilder
append(Objec obj) 将任意类型转换为字符串
StringBulider重写了toString()方法,返回值为对像实际值
5 包装类
- 了解自动装箱 拆箱的原理Integer it= Integer.valueof() 基本数据类型-->包装类;int num= i.intvalue(Integer it) 包装类-->基本数据类型
二 Collention集合接口 java.unti包下
1 集合与数组的区别:集合只能存储对象,数组既可以存储对像也可以存储基本数据类型 Collection<E>
2 集合框架
2.1 学习方法 学习顶层,使用底层
2.2 Collection接口: 单列集合顶层
- List接口: 元素存取有序,可重复,有索引 存入和取出的顺序
- Set接口:元素存取无序,不可重负,无索引
2.3 成员方法
- isEmpty() 为空返回true,不为空返回false
- add() ,remove(),contains()
- public Object[] toArray() 返回的是Object数组 数组不能向下转型
- clear() 数组存在,但是没有元素 size()==0
三迭代器Interator接口 解决遍历输出
1 Iterator接口 每一个集合都有其对应的迭代器
1.1 常用方法
- hasNext() 判断是否还有下一个元素,有true,否false
- next() 返回迭代的下一个元素
- remove() 删除指定元素
1.2 Interator接口的实现类对象
Collection类中的iterator()方法获取迭代器对象
1.3 迭代器的使用步骤
- 使用iterator()获取迭代器对象,用Iterator接口接收 多态 Iterator<E> iterator =coll.iterator();
- 使用hasNext()方法 判断 while
- 使用next()方法 获取
while(iterator.hasNext()){
元素类型 变量名 = iterator.next();
}
1.4 迭代器原理
1.5 迭代器使用过程中的注意事项
- 迭代器只能使用一次,再次使用需要在新建一个迭代其对象
- 迭代器使用过程中不能使用集合方法删除元素(会报错),可以使用迭代器的方法删除
四 增强for 底层也是迭代器,集合改变会报错
1. 集合或数组的遍历
使用增强for循环()
2. 使用格式
for(元素数据类型 变量名 : Collection集合或数组名称){
操作代码
}
3、增强for ,普通for,迭代器的区别:
四 泛型 一般是使用,很少自定义
1. 泛型的特点
- 泛型是未知的数据类型,也可以看成是一个变量,用于接收数据类型
- E e : Element 元素
- T t : Type 类型
- 只有创建对象时,才能确定泛型的数据类型
2. 自定义泛型
- 定义含有泛型类(类名后面)时在声明处添加泛型,用<E>,具体方法直接使用E e
- 定义含有泛型方法: 格式 修饰父<泛型> 返回值类型 方法名(参数列表(使用泛型)){方法体}; 调用泛型时确定泛型数据类型 多参数时public boolean addAll(Collection<? extends E> c) {
return addAll(this.size, c);
}
- 定义含有泛型的接口,形式和类相同,定义实现类时确定泛型的数据类型或者实现类沿用而在创建实现类对象时确定数据类型
- 第一种 public final class Scanner implements Iterator<String>
- 第二种 public class ArrayList<E> implements List<E>
3.泛型通配符
3.1. 不能创建对象,只能作为方法的参数使用
3.2 泛型上限
类型名称<? extends 类> 对象名
参见集合的addAll()方法
[Java] 纯文本查看 复制代码 public boolean addAll(Collection<? extends E> c) {[/size][/font]
[font=微软雅黑][size=3] return addAll(this.size, c);
}
3.3 泛型下限
类型名称<? super 类> 对象名
|
|