黑马程序员技术交流社区

标题: 【石家庄校区】笔记总结 [打印本页]

作者: 账号随机生成    时间: 2018-4-14 17:04
标题: 【石家庄校区】笔记总结
本帖最后由 小石姐姐 于 2018-4-20 09:57 编辑

笔记总结

day 05

String toString()  

                        返回该对象的字符串表示。

boolean equals(Object obj)

          指示其他某个对象是否与此对象“相等”。

                  

    getClass()        返回一个字节码对象
   
    int hashCode()           返回该对象的哈希码值。

Integer.toHexString():将int整形数字转换为十六进制的字符串                  

                  

    hashCode()   获取hash值(通过内部地址转换成一个整数再转换为十六进制数)         
   
   
   
   
   
    Class getClass()方法
    类名.Class属性
    Class类的静态方法 forName(String className)
   
   
    boolean equals(Object obj)
   
   
    System类

static PrintStream err

          “标准”错误输出流。

static InputStream in

          “标准”输入流。

static PrintStream out

          “标准”输出流。

    static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
          从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。           
              

- Date:表示特定的瞬间,精确到毫秒。他可以通过方法来设定自己所表示的时间,可以表示任意时间
- Date:表示特定的瞬间,精确到毫秒。他可以通过方法来设定自己所表示的时间,可以表示任意时间
- System.currentTimeMillis():返回的是当前系统时间,1970
-
- 构造方法:
  - Date():创建的是一个表示当前系统时间的Date对象
    Date(long date):根据"指定时间"创建Date对象         
    重写toString()方法
    - 作用: 任何类可以重写toString()方法来自定义输出内容. 开发调试时经常用, 主要是查看对象的属性值
    - Eclipse快捷键: Alt + Shift + s > Generate toString()...   
      获取字节码对象的3种方式
    - 获取字节码对象的3种方式:
      1. Object类的Class getClass()方法
         - 示例: Class clazz = student.getClass();
      2. 类名.class属性
         - 示例: Class clazz = Student.class;
         - 扩展: 实际上.class是一种特殊形式, 称为类字面常量, class是关键字不能作为属性名, 且Object类中并没有定义这个属性
      3. Class类的静态方法forName(String className)
         - 示例: Class clazz = Class.forName("com.itheima.Student");
         - 注意: 因为该方法使用字符串来寻找类, 有可能并没有该字符串对应的类, 所以会抛出ClassNotFoundException类无法找到的异常
    - 注意:
      - 同一个类的字节码对象只有一个, 地址值是相同的, 无论创建了多少个对象
      - Class和class区别?
        - Class是一个类, 表示字节码文件的类
        - class是一个关键字, 用于定义一个类
        - Object类
          - boolean equals(Object obj): 比较两个对象是否"相等"
        - String类和Object类的boolean equals(Object obj)区别
          - String类的equals: 比较字符串内容是否相同. 重写了Object类的equals方法
          - Object类的equals: 使用==来比较, 基本数据类型比较值, 引用数据类型比较对象的地址值
        - 快捷键:
          - 快速进入类的快捷键:
            - Ctrl + Shift + t, 输入类名
            - 如果显示Source not found, 是找不到源码, 因为使用的是JRE环境没有源码
              - 点击Attach Source > 选择External File > 选择JDK安装目录下的src.zip
          - 查看一个类的方法树形图快捷键:
            - Ctrl + o
            - 输入方法名称后回车可以快速跳转到方法的定义位置
          - 生成equals方法: Alt + Shift + s > Generate hashCode() and equals()...
        - Calendar类: 日历类, 也是处理时间和日期的类, 用于替代Date类
          - 创建对象
            - 静态方法: static Calendar getInstance()
              - 示例: Calendar c = Calendar.getInstance();
          - 静态字段: 表示时间的某个部分
            - static YEAR: 年份
            - static MONTH: 月份. 注意月份数值是0-11
            - static DAY_OF_MONTH: 日期
            - static HOUR: 小时(12小时制)
            - static HOUR_OF_DAY: 小时(24小时制)
            - static MINITE: 分钟
            - static SECOND: 秒
          - 成员方法
            - int get(int field): 返回给定日历字段的值
              - 例如:
                - 获取日期: int day = calendar.get(Calendar.DAY_OF_MONTH);
            - void set(int field, int value): 将给定的日历字段设置为给定值
              - 例如:
                - 设置年: calendar.set(Calendar.YEAR, 2000);
                - 设置月: calendar.set(Calendar.MONTH, 0);
            - void add(int field, int amount): 为给定的日历字段添加或减去指定的时间量, 如时间字段是天, 增加n天, 时间字段是秒, 增加n秒. 减少用负数
              - 例如:
                - 当前日期增加一天: calendar.add(Calendar.DAY_OF_MONTHY, 1);
                - 当前日期减少一天: calendar.add(Calendar.DAY_OF_MONTHY, -1);
  正则表达式:就是一套规则,可以用于匹配字符串

Day06集合

Collection

迭代器

增强for

泛型

List子集

集合的体系结构

- 集合的体系结构:
  - 由于不同的数据机构(数据的组织,存储方式),所以Java为我们提供了不同的集合,
  - 但是不同的集合他们的功能都是相似,不断的向上提取,将共性抽取出来,这就是集合体系结构形成的原因

学习:从顶层往下学

使用:从底层使用具体实现

Collection接口

Collection中的常用功能

- boolean add(E e)
       向集合中添加元素,添加成功返回true,失败返回false,永远能够添加成功
   void clear()
        移除此 collection 中的所有元素(可选操作)。清空集合中的元素

boolean contains(Object o)

          如果此 collection 包含指定的元素,则返回 true。

boolean isEmpty()

          如果此 collection 不包含元素,则返回 true。

boolean remove(Object o)

          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。删除元素,成功true

int size()

          返回此 collection 中的元素数。 获取集合中的元素的个数

Object[] toArray()

          返回包含此 collection 中所有元素的数组。将集合转换为Object[]

- Iterator<E> iterator()
      返回在此 collection 的元素上进行迭代的迭代器。

- 集合的遍历方式:
  - toArray(),可以把集合转换成数组,然后遍历数组即可
  - iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
- Iterator:可以用于遍历数组
- E next():返回下一个元素
  - 使用next方法来获取下一个元素,如果没有下一个元素就会出错了.
- boolean hasNext():判断是否有元素可以获取

泛型

- 使用集合存储自定义对象并遍历
- 由于集合可以存储任意类型的对象,当我们存储了不同类型的对象,就有可能在转换的时候出现转换异常.
- 索引Java为了解决这个问题,给我们体统了一种机制,叫做泛型
- 泛型:是一种广泛的类型,把明确的数据类型的工作提前到了编译时期.

增强for

- foreach的概述和测试
- 格式
  - ``
  - for(元素类型 变量名:数组或集合对象){
    /        可以直接使用变量
     }
      

- forreach:增强for循环,一般用于遍历集合或者数组

- List的常用子类
- ArrayList:底层是数组结构,查询快,增删慢
- LinkedList:底层结构是链表,查询慢,增删快
- 如何选择使用不同的集合?
- 如果查询多,增删少,则使用ArrayList
- 如果查询少,增删多,则使用LinkedList
- 如果不知道用什么,就用ArrayList

LinkedList特有功能:

- void addFirst(E e):将元素添加到索引为0的位置
- void addLast(E e):将元素添加到索引为size()-1的位置.
- E getFirst():获取索引为0的元素
- E getLast():获取索引为size()-1的元素
- E removeFirst():删除索引为0的元素并返回
- E removeLast():删除索引为size()-1的元素并返回.

day 07集合

HashSet集合

Set集合的特点

- set接口:
  - 继承自Collection接口
- 特点:
  - 无序(存储和读取的顺序有可能不一样)
  - 不允许重复(要求元素唯一)
  - 没有索引

HashSet存储自定义对象并遍历

- HashSet唯一性
  HashSet的add()方法,首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较,
  如果hash值不一样,则直接添加元素,
  如果hash值一样,比较地址值或使用equlas比较是否相同

Collections工具类

- Collections:
  *面试题: Collection和Collections有什么区别?
            Collection是集合体系的最顶层,包含了集合体系的共性
            Collections是一个工具类,方法就是用于操作Collection
      //static int binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置
      List<integer> list = new ArrayList<integer>();
      list.add(1);
      list.add(2);
      list.add(3);
      list.add(4);
      
      int intdex = Collections.binarySearch(list,4)
      
      
      
      //static void copy(List dest,List src):是把源列表中的数据覆盖到目标列表

HashMap集合

Map接口的概述

- 特点
- 一个键只能映射一个值
- 键不能重复,值可以重复
- 键是无序的
- Map体系和Collection体系的区别
  Map:是一个双列集合,常用于处理有对应关系的数据,Key是不可以重复的,我们也称之为是夫妻对集合
  Collection:是单列集合,Collection有不同的子体系,List允许重复且有序,Set不允许重复且无序
- Map的常用功能
  A:映射功能:
   V put(K key, V value) :以键=值的方式存入Map集合
   就是将key映射到value,如果key存在,则覆盖value,并将原来的value返回

B:获取功能:

     V get(Object key):根据键获取值

     根据指定的key返回对应的value.

     

int size():返回Map中键值对的个数

  返回对应关系的个数

C:判断功能:

    boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对

    判断指定key是否存在

   

    boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
    判断指定的value是否存在

boolean isEmpty():判断Map集合中是否没有任何键值对

判断是否有对应关系

D:删除功能:

  void clear():清空Map集合中所有的键值对

  清空所有对应关系

  V remove(Object key):根据键值删除Map中键值对

  根据指定的key删除对应关系,并返回key所对应的值,如果没有删除成功则返回null.

E:遍历功能:

  Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回

  Set<K> keySet() :将Map中所有的键装到Set集合中返回

  Collection<V> values():返回集合中所有的value的值的集合



//异常

/*

- 异常的处理方式:
  - 捕获处理
    try...catch语句
- - try {
    有可能出现问题的代码;        
                             }catch(ArithmeticException(这是异常类型) ae(这是异常对象名)) {
                                     处理异常;
                     }
                             try...catch的执行顺序
                                     首先执行try语句
                                             如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
                                             如果没有发现异常,try语句执行结束后,try...catch直接结束,不在执行catch语句.
- - 抛出去               
    当我们不想处理异常,或者我们没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常
                             使用关键字throws在方法的声明处抛出异常.        
     *
- jvm处理异常的方式:
  - 如果出现异常我们没有处理jvm会帮我们处理,他会把异常的类型,原因还有位置显示在命令行
    并且还终止了程序,异常后面的代码将不在执行
     */

/*

- NullPointerException:空指针异常
- ArrayIndexOutOfBoundsException:索引越界异常
- 如何处理多个异常:
  - 可以使用多个try...catch语句
    使用一个try和多个catch
-
- 多个catch之间的顺序:
  - 多个catch之间可以有子父类关系
    平级之间没有顺序关系,
                     如果有子父类,父类异常必须放在后面.
     */

//异常的分类:

        运行时期异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理.

        编译时期异常: 是Exceptinon的子类,非RuntimeException的子类,在编译时期必须处理,

        

        

    如何定义一个异常类呢?
            写一个类取继承Exceptinon或者RuntimeException,然后实现多个构造即可
   
   
   
    递归: 把大问题拆成很多的小问题,然后再把小问题拆成更多的小问题
            当我们把小问题解决了,大问题也就解决了
   
   
    在方法本身不断的调用方法自己
   
    递归注意事项:
                    递归一定要有出口,内存溢出
                    递归次数不宜过多,内存溢出

   
   
   
   
   





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