黑马程序员技术交流社区

标题: 学习经历day01~02 [打印本页]

作者: 木木鱼    时间: 2018-11-14 17:00
标题: 学习经历day01~02
day01


常用API
Objcet类 :根类 ,所有类的父类
所有类的对象都可以使用Object类中定义的方法
toString方法的作用
equals方法的作用


注意使用重写的 equals() 方法比较多个对象是否相等


时间和日期相关类  Date


// 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
// 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间  




long
        \       SimpleDateFormat
         Date -------------------- String
        /
Calendar


DateFormat抽象类: 用于格式化和解析时间
String format(Date date): 格式化, 从Date对象转换为String对象Date parse(String source): 解析, 从String对象转换为Date对象


SimpleDateFormat类
        // 构造方法
        SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象


Calendar类
// 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
       
// 获取日历对象的示例
Calendar c = Calendar.getInstance();  // 代表了当前时间


System类
System类: currentTimeMillis()和arrayCopy()方法




StringBuilder类
String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间


StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存


包装类: 基本数据类型对应的引用数据类型
基本类型
对应的包装类(位于java.lang包中)
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

包装类: 装箱与拆箱


装箱: 从基本类型转换为对应的包装类对象
        装箱原理:
        //Integer i1 = new Integer(1);
        //Integer i2 = new Integer("1");
        Integer i3 = Integer.valueOf(1); //使用包装类中的静态方法valueOf()
拆箱: 从包装类对象转换为对应的基本类型
        拆箱原理:
        int num = i.intValue();




day02
泛型
泛型定义总结:
        定义在类上的泛型:
                有效范围: 整个类中都有效
                何时确定具体类型: 创建该类对象时确定泛型的具体类型
        定义在方法上的泛型:
                有效范围: 方法中(包括返回值类型和参数类型)有效
                何时确定具体类型: 调用方法传参时确定泛型的具体类型
        定义在接口上的泛型:
                有效范围: 接口中
                何时确定具体类型:
                        1. 子接口或实现类定义时确定泛型的具体类型
                        2. 创建实现类对象时确定泛型的具体类型
泛型的好处:
        1. 避免了类型转换的麻烦
        2. 将运行时的类型转换异常, 转移到了编译时期 (有利于程序员提前发现问题)


Collection类
能够说出集合与数组的区别
1. 集合长度可变, 数组长度一旦创建不可改变
2. 集合能存多种引用类型, 数组可以存一种基本和引用类型


Collection集合的常用功能
添加: boolean add(E e)
删除: boolean remove(E e)
清空: void clear()
长度: int size()
判断是否包含: boolean contains(E e)
判断集合是否为空: boolean isEmpty()
转数组: Object[] toArray()
获取迭代器对象: Iterator<E> iterator()


迭代器
迭代器的原理:
        迭代器有一个指针(其实就是个变量, 保存索引值), 最初指向集合的 0 位置
Iterator<元素类型> it = 集合对象.iterator();
while (it.hasNext()) {
    元素类型 变量名 = it.next();
}
加强for循环


集合.for
for (元素类型 变量名 : 集合名) {
    // 使用变量
}


for (元素类型 变量名 : 数组名) {
    // 使用变量
}


增强for, 普通for, 迭代器的区别:
        增强for:
                优点: 获取元素很方便, 格式简单
                缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删
                应用场景: 适用于遍历获取数组和集合元素的场景
        普通for:
                优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素
                缺点: 格式繁琐
                应用场景: 需要用到索引的场景
        迭代器:
                优点: 可以使用迭代器对象的方法操作元素
                缺点: 格式繁琐
                应用场景: 需要在迭代过程中增删元素的场景
泛型上下限
上限: <? extends E>  可以接收泛型为E类型或E类型的子类类型
下限: <? super E> 可以接收泛型为E类型或E类型的父类类型


泛型通配符
<?>
<? extends E>
<? super E>



















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2