黑马程序员技术交流社区

标题: 第十九天总结 [打印本页]

作者: 吴豪    时间: 2015-8-13 21:00
标题: 第十九天总结
1. 回顾
        Coleection -- 单列集合
                List(有序,可重复)
                        ArrayList
                               
                        Vector
                               
                        LinkedList
               
                        遍历:
                                增强for
                                迭代器
                                普通for
               
                Set(无序,唯一)
               
                        HashSet
                                -- 保证元素唯一,依赖 hashCode方法 和 equals方法
                        TreeSet
                                -- 保证元素唯一,并且强制排序
                                方式1:
                                        自然排序
                                        比较器
                        遍历:
                                迭代器
                                增强for
       
        Map -- 键值对形式的集合
                HashMap
               
                TreeMap
               
                Map的遍历方式:
                        方式1:通过键找值
                        方式2:通过键值对关系集合获取键和值
               
2. 异常
        遇到问题时:
                向用户通报错误。
                保存以前所有的共作成果。
                允许用户以妥善的方式结束程序。
               
3. 异常体系
        Throwable
                Error
                        如:运行的类不存在或者内存溢出等。
                        不需要异常处理机制来处理的,需要改代码。
                Exception
                        RuntimeException -- "如果出现该异常,那么一定是你的问题",不需要异常处理机制来处理的,需要改代码。
                        非RuntimeException -- 需要异常处理机制
               
       
4. 自己捕获异常
        try{
                // 可能产生异常的代码
        } catch(异常类型 变量名){
                // 做异常处理代码
        } finally{
                // 写必须执行的代码(释放资源)
        }
       
        注意:除非虚拟机退出,finally里面的代码肯定会执行
       
       
        三个术语:
                1)声明异常
                        throws -- 在方法的声明上 标明该方法有可能会出现什么问题
               
                2)捕获异常(异常处理)
                        try{
                                // 可能产生异常的代码
                        } catch(异常类型 变量名){
                                // 做异常处理代码
                        } finally{
                                // 写必须执行的代码(释放资源)
                        }
                3)抛出异常
                        throw -- 在方法体里面,抛出一个异常
               
5. 多个异常的处理方式
        1) 针对每一个异常写一个try...catch
        2) 一个try多个catch
                注意问题:必须保证抱出的异常能捕捉到。
                        try里面的代码一旦发生异常,就会去catch匹配,如果匹配上,走catch的处理代码。
                        try后面的代码将不再执行。
                如果是有字父类关系,请将父类异常放到后面。
               
6. Throwable里的方法
        String getMessage()
       
        String toString() -- 全路径的类名:消息字符串
       
        void printStackTrace();
                        异常的类型:消息字符串
                        报错的位置。
               
7. 自定义异常
        自定义一个类继承Exception体系的某个类就可以了。
        一般在开发中是继承自RuntimeException
       
                注意事项:要记得添加带参数的构造
               
8. 面试题
         1:请问final,finally,finalize的区别?
                final—修饰符(关键字)
                如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
                因此一个类不能既被声明为 abstract的,又被声明为final的。
                将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
                被声明为final的方法也同样只能使用,不能重载。
               
                finally—在异常处理时提供 finally 块来执行任何清除操作。
                如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
               
                finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
                这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。
                子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

        2:finally里面的代码真的永远会执行吗?
                不一定,如执行了finally前执行了System.exit(0);或者断电了

        3:假如在catch里面有return语句,请问finally里面的代码还会执行吗?如果执行,是在return前,还是return后?

                1、不管有木有出现异常,finally块中代码都会执行;
                2、当try和catch中有return时,finally仍然会执行;
                3、finally是在return后面的表达式运算后执行的
                        (此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),
                        所以函数返回值是在finally执行前确定的;
                4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
               
9. IO流概述

        按流向分:(站在程序的角度考虑)
                输入流 -- 读取文件
                输出流 -- 写入文件
               
        按操作数据分:
                字节流:
                字符流: -- 用windows自带记事本打开,不乱码。
               
10. File类的构造
        File(String pathname)
                根据给定的文件或者文件夹路径创建File对象
        File(String parent, String child)
                根据给定的父文件夹路径 和子文件或者子文件夹名称创建File对象
        File(File parent, String child)
                根据给定的父文件夹对象 和子文件或者子文件夹名称创建File对象
               
11. File的功能
        1)创建功能
                boolean createNewFile() -- 创建文件
                        -- 如果不存在,就创建,返回true
                        -- 如果存在,不创建,返回false
               
                boolean mkdir() -- 创建单级目录
               
                boolean mkdirs() -- 创建多级目录
       
       
        2) 删除功能:
                boolean        delete()
                        -- 返回值表示删除是否成功
               
                -- java中的删除不走回收站。当心!!!
                -- 带自内容的文件夹,删除失败
                       
        3) 判断功能
                boolean        exists()
                        是否存在
                boolean        isFile()
                        是否是文件
                boolean        isDirectory()
                        是否是文件夹
                boolean        isAbsolute()
                        是否是绝对路径
                boolean        canRead()
                        是否可读
                boolean        canWrite()
                        是否可写
                boolean        isHidden()
                        是否隐藏
               
        4) 获取功能
                String getAbsolutePath()
                        获取绝对路径
                String getPath()
                        获取相对路径
                String getName()
                        获取文件名称
                long length()
                        获取文件大小,单位字节
                long lastModified()
                        获取最后修改时间
               
               
               
               
               
               
               
               
                       
               
               
                       
作者: zsx6688    时间: 2015-8-13 21:06
lz加油,我们也马上也学到那了,提前先来学习一下
作者: a513200780    时间: 2015-8-13 22:56
还在对象这里打转的飘过{:2_41:}
作者: 晓月残魂    时间: 2015-8-13 23:08
加油66~~
作者: 张少军    时间: 2015-8-13 23:37
学习最重要的就是总结!不错
作者: 王哲zhe    时间: 2015-8-14 00:47
碉堡了啊
作者: wang949055945    时间: 2015-8-14 00:50
厉害      
作者: fantianfei    时间: 2015-8-14 08:18
分享是美德




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