黑马程序员技术交流社区
标题: [石家庄校区]Object类-常用API-Collection 泛型 [打印本页]
作者: chengc0723 时间: 2018-7-26 11:58
标题: [石家庄校区]Object类-常用API-Collection 泛型
本帖最后由 chengc0723 于 2018-7-26 15:00 编辑
一、java.lang.Object类: 根类, 所有类的父类
Object的成员方法:
1. 对象名.toString(); 返回该对象的字符串表示:
String str = 对象名.toString();
如果不重写toString方法,得到得是地址值
可以通过alt+insert重写;
2. 对象名1.equals(对象名2); 比较两个对象是否相等,返回值为boolean类型;可以通过alt+insert重写;
注意:1.对象名1不能为null.
2.不重写equals方法,默认比较的是对象的地址值;
二、java.util.Date类及其方法的介绍
Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
1.Date的构造方法:
Date():创建Date对象,表示当前系统时间;
Date(long time):修改Date对象的时间;
2.Date的常用成员方法
对象名.getTime:返回对象中的时间毫秒值(long)
对象名.setTime:修改改对象的时间(无返回值)
三、DateFormat类及其构造方法
java.text.DateFormat是一个抽象类:它有非抽象的成员方法:
1. String format(Date date):格式化Date对象为String字符串;
2. Date parse(String str):解析,吧String对象转换为Date对象;
java.text.SimpleDateFormat类
SimpleDateFormatsdf = new SimpleDateFormat(“指定时间格式”);
创建一个指定时间格式类型的对象;
例如: SimpleDateFormatsdf = new SimpleDateFormat(“yyyy-MM-dd”);
y:年 M:月 d:日 H:时 m:分 s:秒 E:星期 D:年中的天 K:小时(12小时制) S:毫秒
sdf.format(Datedate):格式化date时间为sdf类型的时间格式(String);
sdf.parse(Stringstr):如果str格式和sdf格式一致,则把str解析为Date类型的日期.
四、java.util.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 :秒
1.Calenda c = Calendar.getIntance();
创建一个当前时间的Calendar对象c
2. int year = c.get(Calendar.YEAE);
获取c对象的年份值赋给year
c.set(Calendar.MONTH,10);
把int类型的10设置给对象c的月份
五、java.lang.System类之数组的复制方法
static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数
存在数组: arr1 arr2
System.arrayCopy(arr1,3,arr2,1,4)
把arr1数组中3号索引(包括)之后的4个元素,复制(替换)给arr2数组1号索引(包括)之后的4个元素
六、StringBuilder类
StringBuilder sb =new StringBuilder;
sb.spend(任意类型); 添加任意类型数据并返回字符串给当前对象(sb)
sb.toString 将sb转换为String类型
七、java.util.Collection接口:是所有单列集合的顶层接口
成员方法
boolean add(E e): 把给定的对象添加到当前集合中
void clear(): 清空集合中所有的元素
boolean remove(E e): 把给定的对象在当前集合中删除
boolean contains(E e): 判断当前集合中是否包含给定的对象
boolean isEmpty(): 判断当前集合是否为空(没有元素)
int size(): 返回集合中元素的个数
Object[] toArray(): 把集合中的元素,存储到数组中
Iterator<E> iterator(): 获取集合的迭代器对象
ava.util.Iterator<E>迭代器:
类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有
使用方法
Iterator<元素类型> iterator = 集合对象.iterator();
while (iterator.hasNext()) {
元素类型 变量名 = iterator.next();
注意事项:
1. 迭代器对象迭代完毕后, 指针已经指向最后一个元素, 没有下一个元素了. 如果想再次从头遍历集合, 要获取
新的迭代器对象
2. 在使用迭代器迭代的过程中, 如果执行了改变集合长度的操作(如add(), remove(), clear()), 则会抛出
ConcurrentModificationException并发修改异常. 如果要在迭代的过程中添加, 删除元素, 要使用迭代器自带的方
法, 而不能使用集合的方法
八、增强for循环
for(元素的数据类型 变量名 : Collection集合或数组名){…}
九、泛型
泛型的定义和使用
泛型在定义时, 不能是具体的类型, 只是一个变量名(一般用一个大写字母表示)
泛型在使用时, 必须是具体的数据类型
1. 泛型在类中使用
定义测试类
public class GenericClass<E> { // 类上声明了泛型, 类中的所有方法和成员变量都可以使用该泛型
private E name; // 成员变量的类型用泛型
public E getName() { // 成员方法的返回值类型用泛型
return name;
}
public void setName(E name) { // 成员方法的参数类型用泛型
this.name = name;
}
创建测试类对象
public class Test {
public static void main(String[] args) {
// 创建对象, 泛型为Integer
GenericClass<Integer> gc1 = new GenericClass<>();
gc1.setName(1);
Integer name1 = gc1.getName();
System.out.println(name1);
// 创建对象, 泛型为String
GenericClass<String> gc2 = new GenericClass<>();
gc2.setName("这是字符串");
String name2 = gc2.getName();
System.out.println(name2);
}
}
2. 定义含有泛型的方法与使用
修饰符 <代表泛型的名字> 返回值类型 方法名(参数){…}
方法中定义泛型后, 返回值类型和参数类型都可以使用泛型
3. 定义与使用含有泛型的接口
修饰符 interface接口名<代表泛型的变量> {…}
十、泛型通配符
不知道使用什么类型来接收时, 此时可以使用 <?>来表示未知通配符
注意: 只能接收数据, 不能调用方法存储元素
使用方式:
不能创建对象使用
只能作为方法参数使用. (减少方法重载)
泛型的上限:
格式: 类型名称<? extends 类名> 对象名称
示例: List<? extends Number> list
作用: 只能接收该类型及其子类(Number及其子类的泛型)
泛型的下限:
格式: 类型名称<? super 类名> 对象名称
示例: List<? super Number> list
作用: 只能接收该类型及其父类型(Number及其父类的泛型)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |