(就业班前三天笔记)Object类: 是所有没有明确父类,的“类”的父类,也就是祖宗类,所有类都能调用Object里面的用发。 主要两种用法: toString:把一个类的值转为字符串类型。 equals:比较两个变量值是否相等。Boolean类型接收(false,true)。 Date时间类: 里面的构造函数能够把毫秒,日期互相装换。 主要结构:Date da = new Date(); //拾取当前系统时间。 常用方法: getTime();把日期转为对应的毫秒。 DateFormat类: 是日期/时间的抽象类,通个应用这个类可以把文本与日期之间相互转换。 集合与数组的区别: 数组:数组的长度是不能改变的,能存储基本类型或者引用类型。 集合: 集合的长度是可以改变的,只能存储引用类型。 集合的体系结构: Collection --List :有序(存取的顺序),有索引,允许重复。 ArrayList LinkedList Vector --Set: 无序(不保证存取的顺序一致),无索引,不允许重复。 HashSet --LinkedHashSet Collectionz中常用的功能: boolean add(E e); 添加指定元素,返回是否添加功能。 Void clear(); 删除集合中所有元素(清空)。 Boolean contains (Object o) ; 判断集合中是否包含指定元素。 Boolean isEmpty() ; 判断集合是否为空(元素的个数是否为0) Boolean remove(Object o) ; 删除指定元素第一次出现的那个,返回是否删除功能(当元素不存在删除失败) Int size(); 返回元素的个数 Object [] toArray() ; 将集合转为数组。 Iterator: Collectionz的迭代器。(Collectionz 下面所有的集合都能用这个迭代器。) Boolean hasNext(); 判断是否有迭代元素。 E next() 取出指定元素。 使用格式: public class test01 {
public static void main(String[] args) {
Collection<String> c = new ArrayList();
c.add("小红");
c.add("小紫");
c.add("小粉");
Iterator<String> it = c.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
} 主意事项: 1:NOSuchElementException 没有指定元素异常。 解释: 当迭代器遍历集合的末尾已经没有元素可以遍历,如果还调用next方法获取,则抛出此条报错。 2:ConcurrentModificationException 并发修改异常。 解释: 当我们使用迭代器进行遍历集合的时候,如果此时我们对集合进行添加/删除,则会导致遍历结果不确定,则抛出此异常。 记住: 我们使用迭代器的时候,不要在使用过程中添加或者删除。 增强for循环: 格式: for(元素类型 变量名 : 数组/集合名称){ Sout(); } 工作原理: 每次都会将数组/集合元素赋值给“:”左边的变量,我们就能通过操作变量从而操作集合/数组中的元素。 泛型: 使用泛型的好处: 1:限定了存储数据的类型,减少因为类型转换带来的一些问题。 2:简化代码的书写,可以不用向下转型。 定义泛型类: 在定义类的时候在类名后声明泛型:当我们创建此类对象的时候,确定泛型具体是什么类型。 Class Boxx<E>{ } 定义泛型方法: 应用场景:如果返回值类型和传递的参数时相关的,这个时候推荐使用泛型方法。 Public <E> void getElement((ArrayList<E> list,int index){ } 定义泛型接口: 1:在定义实现类的时候,直接确定接口中的泛型具体类型。 Interface Box<E>{ } Class BoxImpements Box<String>{ } 2:在定义现实类的时候不确定泛型类型,但是在创建实现类对象的时候再去确定具体类型。 Interface Box<E>{ } Class BoxImpl<E>impements Box<E>{ } BoxImp<String> b = new BoxImpl<String>() 数组:ArrayList底层是数组的实现。 特性: 1:长度不可变。 查询快:数组的地址是连续的,通过数组的首地址可以找到数组,通过数组的索引可以快速的查找某个元素。 增删慢: 2:查询快(元素有对应的索引,是一片连续的存储空间。1) 链表: 特点: 1:增删快(添加增删元素不会改变原有内容) 2:查询慢() 双向链表: 1: 红黑树: 特点: 查询快。 名词解释: 二叉树:分支不超过两个。 查找树/排序树:是一个有序的二叉树(左子树小于节点,右子树大于节点)左中右。则是从小到大的顺序。 平衡树:左右子树高度差不超过1。 红黑树:趋近于平衡树,查询速度非常快。 Java.util.List; 概述: 是Collection下的一个子接口,在list接口下的集合都有以下特点。 1:有序。 2:有索引。 3:允许重复。 List中的特有功能(和索引相关的增删改查的功能) Void add(int index,E element):在指定索引位置添加元素。 E remove(int index):删除指定索引位置的元素,把删除的元素返回。 E set(int index,E element):修改指定索引个位置的元素。 E get(int index):获取指定索引位置元素。 AarryList:底层实现的数组(查询快,增删快) LinkedList:底层实现的链表(查询慢,增删快) 特有功能: 针对于链表的首尾位置元素的操作。 E getFirst() E getLast() E removeFirst() E removeLast() Set接口的特点: 1:不允许存储重复元素。 2:没有索引,没有带索引的方法,也不能使用普通for循环。 Java。Util。HashSet集合 implements Set接口 特点:底层是hash表的实现,查询效率高。 1:不允许重复存储元素。 2:无索引 3:无序(不保证存和取的顺序) HashSe存储原理: 通过hashCode方法确定索引位置。 再通过equals方法去除重复元素。 总结: 存储元素的操作: 1.先获取对象的hash值去存储元素。 2.Hash值不一样 则比较equals的返回值。 如果是true则认为元素重复。 如果是false,则认为元素不重复,则添加元素。 当我们用HashSet存储自定义对象的时候,如果想保证元素的唯一性,则需要重写HashCode的equals方法。 LinkedHashSet:本质就是一个有序的HashSet: Hash表用于储藏元素。 链表用于记录储藏顺序,当我们获取元素的时候,则会通过链表记录的顺序获取元素。 可变参数: 一种特殊的参数类型,可以接受任意多个同种数据类型的数据,:0种,一种,多种! 格式: 数据类型... 参数名 原理: 将传递的任意多个元素,封装到一个数组中,最后再传递给可变参数的变量。
|