Object类 Object类,在java.lang包下是所有类的直接和间接的父类 其中包括了我们常用的toString方法和equals方法 覆盖重写Object类中的两个方法 PublicString toString(Object obj); 返回该类型的字符串 PublicString equals(Object obj); 指示其他某个对象是否与此对象“相等”。 Date:时间类 java.util.Date:表示时间的类 Date表示特定的时间,精确到毫秒 毫秒:精确到千分之一秒 1000毫秒 =1秒 毫秒值的作用:可以对时间和日期进行计算 把日期转换为毫秒:
当前的日期:2088-01-01
时间原点(0毫秒):1970 年 1 月 1 日 00:00:00(英国格林威治)
就是计算当前日期到时间原点之间一共经历了多少毫秒 (3742767540068L)
DateFormat类 Java.textDateFormat是对日期/时间按照指定格式,格式化。(抽象类,无法直接创建对象) 解析:按照指定的格式,从Date对象转换成String对象 Calendar类(抽象类) java.util.Calendar类是一个日历类 Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR )
Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
static Calendar getInstance() 使用默认时区和语言环境获得一个日历。System类 java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有 public static long currentTimeMillis():返回以毫秒为单位的当前时间。 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。 参数: src - 源数组。 srcPos - 源数组中的起始位置(起始索引)。 dest - 目标数组 destPos - 目标数据中的起始位置。 length - 要复制的数组元素的数量。包装类 通过类把基本数据类型包装起来进行使用 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类) 构造方法: Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。 Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 传递的字符串,必须是基本类型的字符串,否则会抛出异常 "100" 正确 "a" 抛异常 静态方法: static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。 static Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。拆箱:在包装类中取出基本类型的数据(包装类->基本类型的数据) 成员方法: int intValue() 以 int 类型返回该 Integer 的值。 自动装箱与自动拆箱:基本类型的数据和包装类之间可以自动的相互转换Collection集合 Collection集合是一个接口,所有单列集合都实现了Collection接口 java.util.Collection接口 所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法 任意的单列集合都可以使用Collection接口中的方法共性的方法: public boolean add(E e): 把给定的对象添加到当前集合中 。 public void clear() :清空集合中所有的元素。 public boolean remove(E e): 把给定的对象在当前集合中删除。 public boolean contains(E e): 判断当前集合中是否包含给定的对象。 public boolean isEmpty(): 判断当前集合是否为空。 public int size(): 返回集合中元素的个数。 public Object[] toArray(): 把集合中的元素,存储到数组中。 Iterator迭代器 java.util.Iterator接口:迭代器(对集合进行遍历)有两个常用的方法 boolean hasNext() 如果仍有元素可以迭代,则返回 true。 判断集合中还有没有下一个元素,有就返回true,没有就返回false E next() 返回迭代的下一个元素。 取出集合中的下一个元素Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象 Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。迭代器的使用步骤(重点): 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态) 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素 3.使用Iterator接口中的方法next取出集合中的下一个元素 iterator删除指定元素和list.remove 不一样 ConcurrentModificationException异常 并发修改异常增强for (for each) 专门用来遍历数组和集合的,他的内部原理其实就是一个Iterator迭代器 Collection<E>extends Iterable<E>:所有的单列集合都可以使用增强forpublic interface Iterable<T>实现这个接口允许对象成为 "foreach" 语句的目标。增强for只能用于遍历Collection和数组!增强for循环:用来遍历集合和数组格式: for(集合/数组的数据类型 变量名: 集合名/数组名){ sout(变量名); }泛型创建集合对象,不使用泛型好处: 集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据弊端: 不安全,会引发异常创建集合对象,使用泛型好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错) 弊端: 泛型是什么类型,只能存储什么类型的数据数据结构 栈 先进后出数据结构 队列 先进先出 数据结构 数组 查询快,增删慢 数组的长度不可改变数据结构 链表 查询慢,增删快 List接口 java.util.List接口extends Collection接口List接口的特点: 1.有序的集合,存储元素和取出元素的顺序是一致的(存储123取出123) 2.有索引,包含了一些带索引的方法 3.允许存储重复的元素List接口中带索引的方法(特有) - public void add(int index, Eelement): 将指定的元素,添加到该集合中的指定位置上。 - public E get(int index):返回集合中指定位置的元素。 - public E remove(int index): 移除列表中指定位置的元素,返回的是被移除的元素。 - public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新 ArrayList集合 特点,ArrayList集合底层是一个数组,数组的特点就是查询快增删慢 不是同步的,也就是说是多线程的整体效率会高 LinkedList集合 java.util.LinkedList集合implements List接口LinkedList集合的特点: 1.底层是一个链表结构:查询慢,增删快 2.里边包含了大量操作首尾元素的方法 Vector集合 最早版本的一个集合,底层是数组结构,是单线程的速度慢被ArrayList所取代 是同步的,单线程,整体效率低 LinkedHashSet集合 java.util.LinkedHashSet集合 extends HashSet集合LinkedHashSet集合特点: 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序可变参数 可变参数:是JDK1.5之后出现的新特性使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数.使用格式:定义方法时使用 修饰符 返回值类型 方法名(数据类型...变量名){}可变参数的原理: 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数 传递的参数个数,可以是0个(不传递),1,2...多个 可变参数的注意事项 1.一个方法的参数列表,只能有一个可变参数 2.如果方法的参数有多个,那么可变参数必须写在参数列表的末尾Collections 集合工具类 java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下: - public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。 - public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。- java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下: public static <T> voidsort(List<T> list):将集合中元素按照默认规则排序。Collections集合工具类中有一个重载形式的sort排序 - java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下: public static <T> voidsort(List<T> list,Comparator<? superT> ):将集合中元素按照指定规则排序。 Comparator和Comparable的区别 Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法 Comparator:相当于找一个第三方的裁判,比较两个Map集合(接口) java.util.Map<k,v>集合
Map集合的特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map集合中的元素,key是不允许重复的,value是可以重复的
4.Map集合中的元素,key和value是一一对应
java.util.HashMap<k,v>集合 implements Map<k,v>接口
HashMap集合的特点:
1.HashMap集合底层是哈希表:查询的速度特别的快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表|红黑树(链表的长度超过8):提高查询的速度
2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap的特点:
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是 Map中常用的方法 public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。 返回值:V 存储键值对的时候,key不重复,返回值V是null 存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值 public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。 返回值:V key存在,v返回被删除的值 key不存在,v返回null public V get(Object key) 根据指定的键,在Map集合中获取对应的值。 返回值V: key存在,返回对应的value值 key不存在,返回null boolean containsKey(Object key) 判断集合中是否包含指定的键。包含返回true,不包含返回falseEntry键值对象 LinkedHashMap集合 java.util.LinkedHashMap<K,V> entends HashMap<K,V>Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。底层原理: 哈希表+链表(记录元素的顺序)Hashtable集合(早期1.0版本使用被HashMap集合取代) java.util.Hashtable<K,V>集合 implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快HashMap集合(之前学的所有的集合):可以存储null值,null键Hashtable集合,不能存储null值,null键 异常: java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。 Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeException:运行期异常,java程序运行过程中出现的问题 异常就相当于程序得了一个小毛病(感冒,发烧),把异常处理掉,程序可以继续执行(吃点药,继续革命工作) Error:错误 错误就相当于程序得了一个无法治愈的毛病(非典,艾滋).必须修改源代码,程序才能继续执行异常的处理: Java异常处理的五个关键字:try , catch , finally , throw ,throws 抛出异常 throw throw关键字作用: 可以使用throw关键字在指定的方法中抛出指定的异常使用格式: throw new Exception("异常产生的原因")try ..catch try...catch:异常处理的第二种方式,自己处理异常finally代码块 格式: try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,异常异常对象之后,怎么处理异常对象 一般在工作中,会把异常的信息记录到一个日志中 } ... catch(异常类名 变量名){ }finally{ 无论是否出现异常都会执行 }子父类的异常: - 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。 - 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出注意: 父类异常时什么样,子类异常就什么样自定义异常类: java提供的异常类,不够我们使用,需要自己定义一些异常类格式: public class XXXExcepiton extendsException | RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法
|