黑马程序员技术交流社区

标题: 【石家庄校区】Object类、常用API、Collection集合、泛型笔记 [打印本页]

作者: 月寒水影    时间: 2018-7-26 11:32
标题: 【石家庄校区】Object类、常用API、Collection集合、泛型笔记
本帖最后由 小石姐姐 于 2018-7-26 17:22 编辑

Object类、常用API、Collection集合、泛型笔记
Object类概念:根类,所有类的父类;        
特点:任何一个类都直接或者间接的继承Object类,并可以使用Object类中定义的方法;        
补充:一个类如果没有指定继承某个父类,则默认继承Object类


Object类的toString方法:      
作用:返回该对象的字符串表示;        
补充:
[AppleScript] 纯文本查看 复制代码
任何对象都可以调用toString()默认使用Object类中定义的方式,如果不想使用默认方式,可以在子类中重写toString()方法,快捷键为ALT+Insert,选择toSting()即可;



Object类的equals方法:        
作用:比较两个对象是否相等;        
补充:默认使用equals()方法时,通过==比较地址值,重写时,一般让对象根据内容来判断是否相等


日期时间相关的类Date类:        
概念:java.util.Date类:日期,表示特定的瞬间,存储的是精确到“毫秒”的值;        
作用:setTime和getTime来修改和取出Date对象的时间毫秒值;        
充:从1970年01月01日 00:00:00至今,经过的毫秒值(1秒=1000毫秒)

DateFormat抽象类:      

作用:java.text.DateFormat用于格式化和解析时间对象,拥有方便的方法;
[AppleScript] 纯文本查看 复制代码
String format(Date date):Date--->StringDate parse(String source):String-->DateSimpleDateFormat format=new SimpleDateFormat(格式)


利用SimpleDateFormat对象和format方法格式化为String:
[Java] 纯文本查看 复制代码
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = new Date();
// 格式化
String s = sdf.format(date);
System.out.println(s); // 2018年07月24日
}

利用SimpleDateFormat对象和parse方法格式化Date:
[Java] 纯文本查看 复制代码
String s = "2000-10-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(s);
// 将date转换为long
long time = date.getTime();
System.out.println(time);



Calendar类的常用功能:
[AppleScript] 纯文本查看 复制代码

get(int field):获取指定日历字段值
set(int filed,int value):修改为value
add(int filed,int amout):调整值,正数增加,负数减少


System类之数组复制方法:
[AppleScript] 纯文本查看 复制代码

static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length)
src:被复制的数组
srcPos:从被复制的数组哪个索引开始复制
dest:要复制到的那个数组
destPos:要复制到的那个数组哪个索引开始接收
length:要复制的元素个数



StringBuilder类:
作用:高效拼接字符串,底层使用数组保存;
方法:
[AppleScript] 纯文本查看 复制代码
StringBuilder append(任意类型):   添加任意类型数据的字符串形式, 并返回当前对象
                  String toString():    将当前StringBuilder对象转换为String对象

包装类:

概念:基本数据类型对应的引用数据类型        
作用:用于泛型      
补充:一般是基本类型首字母大写例如byte--》Byte,但是int类型是int--》Integer,char类型是char--》Character


自动装箱,自动拆箱:        
[AppleScript] 纯文本查看 复制代码
自动装箱: 从基本类型转换为包装类    Integer i = Integer.valueOf(基本类型);
自动拆箱: 从包装类转换为基本类型    int a = i.intValue();   

     
Collection单列集合
1.集合长度可变,存储的都是对象
2.List接口,元素有序(存储和取出顺序一致),可重复,有索引
3.Set接口,元素无序(除了LinkeHashSet集合),不可重复,无索引
4.多态创建对象:父类引用指向子类对象
5.多态调用方法

6.成员方法:
[Java] 纯文本查看 复制代码

add(E e):     添加
clear():        清空集合所有元素
remove(E e)  删除指定元素
contains(E e):    判断当前集合中是否包含给定的对象
isEmpty():          判断当前集合是否为空(没有元素)
size():                返回集合中元素的个数
toArray():          把集合中的元素,存储到数组中



迭代器(接口)
使用迭代器遍历集合的3步:


[Java] 纯文本查看 复制代码
1.使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态)
2.使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素
3.使用 Iterator 接口中的 next() 方法, 获取下一个元素增强for
增强for:
也称foreach循环, JDK 5出现, 用于遍历集合, 底层采用迭代器作用:       遍历数组遍历集合;
增强for, 普通for, 迭代器三者的区别:
增强for:
优点: 获取元素很方便, 格式简单
缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删
应用场景: 适用于遍历获取数组和集合元素的场景
普通for:
优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素
缺点: 格式繁琐
应用场景: 需要用到索引的场景
迭代器:
优点: 可以使用迭代器对象的方法操作元素
缺点: 格式繁琐
应用场景: 需要在迭代过程中增删元素的场景
泛型
​定义集合时, 某些方法不知道使用什么类型时, 就可以使用泛型创建集合对象时, 需要确定泛型具体的类型;泛型可以看作是一个变量, 用来接收数据类型泛型定义:
定义在上的泛型:               有效范围: 整个类中都有效                                         何时确定具体类型: 创建该类对象时确定泛型的具体类型   
定义在方法上的泛型:            有效范围: 方法中(包括返回值类型和参数类型)有效      何时确定具体类型: 调用方法传参时确定泛型的具体类型
定义在接口上的泛型:            有效范围: 接口中                                                      
何时确定具体类型:          
1. 子接口或实现类定义时确定泛型的具体类型         
2. 创建实现类对象时确定泛型的具体类型
泛型通配符
不知道使用什么类型来接收时, 此时可以使用< ?>来表示未知通配符
泛型的上下限
类型名称<? extends 类名> 对象名       Collection: 泛型的上限   接收类名或类名子类类型的泛型参数
类型名称<? super 类名> 对象名       Collection: 泛型的下限   接收类名或类名父类类型的泛型参数








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