黑马程序员技术交流社区

标题: 【石家庄校区】JavaSE进阶之随笔记 [打印本页]

作者: yang_L    时间: 2018-1-4 17:24
标题: 【石家庄校区】JavaSE进阶之随笔记
本帖最后由 小石姐姐 于 2018-1-5 09:32 编辑

JavaSE进阶之随笔记
就业第七天
集合之set接口
        特点:元素存取无序,元素不可重复,无索引

HashSet集合
        创建集合对象
        添加元素对象
        遍历集合对象
                1.转数组
                2.迭代器
                3.增强for
通过查看源码发现:
        确保元素唯一性,先比hash值,再比地址值,或进行equals方法比较.比较结果一样则认为重复不添加.不一样则添加

        当hashCode方法永远返回1时,所有对象的hash值一样.
        有一些对象的成员变量不同,但是还是需要进行hash和equals方法进行比较
        为了提高程序的效率,可以把成员变量和hashCode方法的返回值关联起来,


collection和collects有什么去区别?
        collection是集合体系的最顶层,包含了集合体系的共性
        collections是一个工具类

Map双列集合(接口)
        概述:双列集合用于提供一对一数据的处理,与Collection属于同级

        特点:将键映射到值得对象.一个映射不能包含重复的键,每个键最多只能映射一个值
        键不可重复,值可以重复
        键是无序的

Map和Collections的区别
        Map:双列集合,用于处理具有对应关系的数据,key是不可重复的,也叫夫妻对集合
        Collection:单列集合,具有不同的子体系,有有序的,也有无序的,也叫单身汉集合

        常用功能:
                删除功能:
                        void clear();清空集合
                        V remove(Object obj):根据指定的key删除对应关系,并返回key对应的值
                判断功能:
                        boolean containKey();判断指定key是否存在
                        boolean containValue();判断指定的value是否存在
                        boolean isEmpty();判断集合是否为空
                覆盖功能:
                        V put(K key,V value);将key映射到value,key存在则覆盖value,
                遍历功能:
                        Set<Map.Entry,V) entrySet()
                Set<K> keySet();将所有的键返回成一个Set集合
                Collection<V> values();将所有的元素返回成一个Set集合或List集合,
                获取功能:
                        V get(Object key)
                        
        Map的遍历方式:
                1.找出所有的key,遍历所有的key集合,获取key,通过get()方法获取value
                2.通过Map的EntrySet方法来把Key和Value输入到Map的内部类Entry中,再调用Entry对象的getKey方法和getValue方法来遍历输出

可变参数
        当参数不确定,但类型要一致,Java可以直接转成数组
        实参:(实参1,实参2,....)
        形参:类型名...变量名

        注意:可以在可变参数前添加别的形参,但不可以在后面加

就业第八天
异常:
        概述:不正常,我们在代码出现的编译或者运行时的错误
        异常包含了错误的类型、原因以及位置

        体系结构:
                Throwable(最顶层):
                        Error:出现的不能够处理的严重问题
                        Exception:可以处理的问题,编译时期的异常
                                RuntimeException:编译时正常,运行时发生的异常
        常见异常:
                NullPointerException:空指针
                ArrayIndexOutOfBoundException:数组指针越界
        任何数字除以0都会抛出异常

        异常的处理方式:
                //第一种方式
                捕获
                try{

                存放可能发生的异常代码
                可以有多行代码

                }catch(异常类型 异常对象名){
                对异常进行处理的代码
                也可以通过异常对象名获取异常的信息               
                }finally{
                用于释放资源
                清理垃圾
                }

                首先执行try语句
                        发现异常,异常下面的代码不执行,跳入catch语句,catch语句结束后,try...catch结束
                        没有异常,不执行catch语句

                处理多个异常
                        使用多个try...catch语句
                        使用一个try和多个catch语句
                        多个catch的顺序
                                多个
                                平级没有顺序
                                有子父类,父类必须在后面

                //第二种方式
                抛出
                        在不想处理或没有能力处理异常时,可以选择抛出
                关键字:throws,在方法的声明处使用
                定义格式:
                方法名(参数列表) throws 异常类型1,异常类型2........{

                }

                JVM处理异常:
                        异常我们不处理,JVM会把异常的种类,原因还有把位置显示在命令行,并且终止程序,异常后的代码不再执行
                try...catch操作捕获的异常
                String getMessage();
                        返回异常原因
                String toString();
                        返回异常类型
                void printStackTrace();
                        输出异常原因和类型,还有位置
                异常分类
                        1.运行时期异常:RuntimeExceptipon的子类就是运行时期异常,可以自行处理或者不处理
                        2.编译时期异常:
                                非RuntimeException ,编译时期的一样必须处理
                        两种异常处理方式
                                throws:处理异常的一种方式将异常抛出,由调用者处理
                                throw:制造异常的方式,并且结束方法
                        注意
                                抛出(throws)




递归:大事化小,小事化了

注意:
        1.递归一定要有出口
        2.递归次数不宜过多

就业第九天
IO流
绝对路径:固定不可变的路径,以盘符开头
相对路径:相对于某个参照物,不以盘符开头

        FIle类
                常用功能:
                        创建功能
                                boolean createNewFile():
                                        创建新文件,返回是否创建成功
                                        文件不存在的时候返回true并创建文件,存在的时候返回false
                                boolean mkdir():
                                        创建目录,返回是否成功
                                        文件夹不存在的时候返回true并创建,存在的时候返回false
                                boolean mkdirs();
                                        创建多级目录,包括指定路径中缺少的父级目录,
                                        当多级文件夹不存在时返回true并创建多级文件夹,存在返回false
                        判断功能
                                boolean exists():
                                        判断文件或文件夹是否存在,存在true,否则false
                                boolean isAbsolute():
                                        判断File对象指向的路径是否是绝对路径,是true,否false
                                boolean isDirectory():
                                        判断File对象指向的是否是目录,是true,否false
                                boolean isFile():
                                        判断File对象指向的是否是文件,是true,否false
                                boolean isHidden():
                                        判断File对象指向的路径是否有隐藏属性,是true,否false
                        获取功能
                                String[] list():获取当前路径下所有文件和目录的名称,返回成一个字符串数组
                                File[] listFiles():获取当前路径下所有文件和目录,返回成一个File类的对象数组
                                static File[] listRoots():返回当前电脑的所有盘符
                        删除功能
                                boolean delete():
                                        删除文件或文件夹,返回是否成功
                                        当指定文件或文件夹存在时删除文件,返回true,不存在时返回false
                                注意:delete()方法删除文件夹,文件夹下面不能有文件和文件夹


IO流分类
        流向
                输入流        读取数据  FileReader Reader
                输出流  写出数据  FileWriter Writer
        数据类型
                字节流  字节输入流        读取数据  InputStream类
                        字节输出流        写出数据  OutputStream类
                字符流        字符输入流        读取数据  Reader类
                        字符输出流        写出数据  Writer类


递归中

就业第十天
        转换流
                OutputStreamWriter:字节输出流转字符输出流

                InputStreamReader:字节输入流转字符输入流


        打印流
                PrintStream:字节打印流

                PrintWriter:字符打印流
                        特点:
                                1.自动换行
                                2.输出除了字节以外的任意类型
                                3.通过构造方法配置,实现自动刷新(调用println、printf或format才有用)
                                4.包装流,不具备写功能
                                5.可以把字节流转换流字符输出流

        对象操作流:可以用于读写任意类型的对象
                ObjectInputStream:对象输入流
                        readObject
                        ObjectInputStream(InputStream in)
                ObjectOutputStream:对象输出流
                        writeObject
                        ObjectOutputStream(OutputStream out)

        注意:使用对象输出流写出对象,只能用对象输入流写入
        解决对于实现序列化接口黄色警告的问题


        集合
                Properties :表示一个持久的属性集,属性列表中每个键及对应值都是一个字符串
                        构造方法:
                                Properties
                        和IO流结合
                                1.void list(PrintWriter out)
                                2.void load(Reader reader)
                                3.void store(writer
                属性 配置 Map();
        乱码
                编码表
                        ASCII:美国标准码
                        GB2312 ---GBK  国标和国标扩展码
                        Unicode:万国码
                        UTF-8:Unicode的一种实现方式,长度可变的码表,一个字符栈1or2or3个字节
                        ANSI:本地编码表,根据系统决定编码
                原因
                字符串编码的转换
标准输入输出流
        public static final InputStream in;字节输入流,用来读取键盘录入的数据
        public static final OutputStream out;字节输出流,将数据输出到控制台








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