黑马程序员技术交流社区

标题: [石家庄校区]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