黑马程序员技术交流社区

标题: 成都校区 [打印本页]

作者: 一抹曙光    时间: 2018-12-12 17:26
标题: 成都校区
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,不包含返回false
Entry键值对象
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{        添加一个空参数的构造方法        添加一个带异常信息的构造方法






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