2022年JavaSE知识点总结2.docx
《2022年JavaSE知识点总结2.docx》由会员分享,可在线阅读,更多相关《2022年JavaSE知识点总结2.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2、 面对对象得懂得面对对象就是 Java 得基本特点,就是软件开发过程使用得基于面对过程一种思维方式, 将功能封装进对象,强调具备功能得对象与调用结果,不关注详细实现这个功能得过程;面对对象特点:就是一种更符合人们摸索习惯得思想,可以将复杂得事情简洁化,将程序由执行者转换成为指挥者;面对对象特性:封装,继承,多态封装:封装就是把数据与方法包装进类中,隐匿其详细实现细节,对外供应公共拜访方法;封装得结果就是一个同时带有特点与行为得数据类型;(安全性,复用性)继承:当一个类得属性与行为均与现有类相像,属于现有类得一种时,这一个类可以 定义为现有类得子类;或者,当多个类具有相同得属性与行为,我们可
2、以抽取出共性 得内容定义父类,再创建相像得”兄弟 ”类时只要继承父类即可;当子类继承父类后, 拥有了父类非私有得方法并可以直接调用;假如认为父类供应得方法不够强大,子类 可以依据子类自身得规律重写继承过来得父类方法;(复用性,可保护性,多态前提)多态:继承就是多态得前提,多态就是指一种事物具有多种形状,比如猫具有猫类得形状,也具有动物得形状,多态得详细表现就是父类引用指向子类对象,父类得引用也可以接收自己子类得对象;(可保护性,扩展性)面试 :跟我谈谈什么就是面对对象1 面对对象就是基于面对过程得2 什么就是面对过程什么就是面对对象3 面对对象得特点3、 面对对象与面对过程得区分面对过程强调得
3、就是功能行为,分析解决问题所需得步骤,以函数为基础,完成各种步骤得操作与实现;面对对象就是基于面对过程得,将功能封装成对象,强调得就是具备了这些功能得对象,让对象去调用方法来解决问题;面对对象举例4、 abstract 与哪些关键字不能共存为什么private :私有得方法就是不行见得,无法被重写final :被 final 修饰得方法就是最终方法,无法被重写static :被 static 修饰得方法,要随类加载到方法区,由于抽象方法没有方法体所以不能加载5、 static 得特点(1) 随着类得加载而加载;优先于对象存在; 被全部对象所共享;可以直接被类名所调用;(2) 静态方法只能拜访静
4、态,非静态方法既可以拜访静态也可拜访非静态(3) 静态方法中不行以定义this 、super 关键字,由于静态优先于对象存在,this与 super 所代表得对象仍不存在;6、 类与类、类与接口、接口与接口得关系继承(单继承,多层继承,object ),实现(多实现),继承(多继承)7、 final 、finally 、finalize 得区分final :可以修饰类、方法与变量,被final 修饰得类无法被继承,方法无法被重写,变量为常量只能赋值一次finally :反常处理,与 try 、catch 结合使用,可以添加也可以不添加,用于执行一些必需执行得代码,如释放资源等finalize
5、:Object 类中得方法,其中定义了对象要被垃圾收集器回收之前要做得相关得清理工作8、 什么就是多态,多态得好处与弊端多态可以懂得为 事物存在得多种表达形状;父类得引用指向了自己得子类对象; 父类得引用也可以接收自己子类得对象;提高了程序得可保护性与扩展性弊端:父类得引用只能拜访父类中有得成员而无法调用子类中特有得方法10 、 wait 与 sleep 得区分(1) 所在得类不同: wait 就是 Object 类中得方法, sleep 就是 Thread 类中得方法 2sleep 方法没有释放同步锁,而wait 方法释放了同步锁,使得其她线程可以使用;(3) sleep 必需指定时间, w
6、ait 可以指定也可以不指定时间;(4) wait , notify 与 notifyAll 只能在同步方法或者同步代码块里面使用,而sleep 可以在任何地方使用(5) sleep 必需捕获反常,而 wait , notify 与 notifyAll 不需要捕获反常16 、 对匿名内部类得懂得匿名内部类就就是没出名字得内部类,就是内部类得简化形式;一般只使用一次得时候使用匿名内部类, 匿名内部类本质上就是一个匿名子类对象;匿名内部类得使用前提: 内部类继承一个类或实现接口;匿名内部类包括两个步骤:创建一个类或者接口 得子类,即刻创建该子类得对象;简化书写;17 、 IO 体系字节流 Inpu
7、tStream/OutputStream |-:文件字节流,用于文件得读写操作|- BufferedInputStream/BufferedOutputStream:加缓冲区得字节流,用于提高效率字符流 Reader/Writer |-:文件字符流,用于文本文件得读写操作|- BufferedReader/BufferedWrite:加缓冲区得字符流,用于提高效率转换流InputStreamReader/OutputStreamWriter:就是字节流与字符流之间得桥梁18 、 集合体系|-Vector :功能同 ArrayList 类似,底层也就是数组,线程就是同步得,所以就是安全得,效率较
8、低,数据增长就是50% 得增长;|-Set :元素就是无序得,元素不答应重复,底层用到了Map|-HashSet :底层 hash 表,储备得对象最好复写hashCode 与 equals 方法,|-TreeSet :底层自平稳得二叉树,储备得对象具备比较性,有两种方法:自然排序、比较器排序|-Collection |-List:元素就是有序得,元素答应重复,由于该集合体系都具有索引|-ArrayList :底层数据结构就是数组,查询速度快,增删操作较慢,线程不同步|-LinkedList :底层数据结构就是链表,查询效率较低,增删操作快,线程不同步,数据增长就是 100% 得增长; 保证元素
9、不会重复|-Map :数据就是以键值对得形式储备得,有得元素存在映射关系就可以使用该集合,|-HashMap :答应有 null 键或值,线程不同步,键就是唯独得|-TreeMap :元素可排序|-HashTable :类似 HashMap ,不答应有 null 键或值,线程同步,元素不答应重复21 、 局部变量与成员变量区分成员变量定义位置:类中,整个类中均可以拜访,通常用private 修饰;内存:成员变量随着对象得建立而建立,存在于对象所在得堆内存中;默认值:成员变量有默认值;回收:随着对象得回收而回收;局部变量定义位置:定义在局部范畴,如方法内,语句内等;内存:局部变量存在于栈内存中;
10、默认值:没有默认值;回收:随着作用域终止而回收,通常为语句或方法范畴;22 、 同步函数与同步代码块得区分同步代码块使用得锁可以就是任意对象;同步函数使用得锁就是this ,静态同步函数得锁就是该类得字节码文件对象;在一个类中只有一个同步得话,可以使用同步函数;假如有多同步,必需使用同步代码块,来确定不同得锁;所以同步代码块相对敏捷一些;23 、 数组与集合得区分容器长度:集合长度可变,数组长度固定储备内容类型:集合储备引用数据类型,数组储备任意类型就是否可储备不同类型数据:数组只能储备同种数据类型得元素,集合可以储备不同类型 键值 得元素;有序可重复:数组就是有序可重复得集合中有些就是有序可
11、重复得如list ,有些就是无序不行重复得如set, map 24 、 StringBuffer与 StringBuilder得区分StringBuffer就是同步得,所以线程安全,但就是效率低,StringBuilder就是不同步得, 所以线程担心全,但就是效率高;StringBuilder要比 StringBuffer快;单线程得程序使 用 StringBuilder比较好,多线程得情形下可以自己加锁,也可以直接使用StringBuffer ;25 、 String 与 StringBuffer区分String 对象一经创建就不会发生变化了,即便就是赋新值也不就是在原对象得基础上转变,而就
12、是创建一个新得字符串对象,将引用指向这个新得对象,会造成空间得浪 费,效率较低; StringBuffer只创建一个对象,就是在同一个实例得基础之上追加,效率更高,当需要用到 String 得时候 toString 就可以了其次部分 学问点26 、 说明 Java 中 String str=null与 String str=得区分?String str = null表示声明白一个 String 对象得引用 str ,但就是没有为其安排内存空间;String str = 表示创建了一个长度等于0 得空字符串,并在内存中为其安排了内存空间;String str = new Stringtw; st
13、r在内存中有两个对象, 1、堆内存有一个 new Sting 2、常量池中有一个字符串;27 、 使用运算符 = = 与方法 equals进行比较对象得区分?使用 = 算符比较基本数据类型时,比较得就是值相等;使用 = 算符比较对象时, 比较得就是内存地址值使用 equals 方法 比较对象时,比较得就是对象得内容,与地址无关,假如没有重写equals 方法就直接调用得就是Object 得 equals 方法;28 、 接口与抽象类有何区分?(1) 成员特点:构造方法:接口没有构造方法;抽象类有构造方法;成员变量:接口中只有常量;抽象类中可以就是常量,也可以就是变量;成员方法:接口中只有抽象方
14、法;抽象类中既有抽象方法,也有非抽象方法;(2) 关系特点:类与类:类与类之间只有单继承,可以有多层继承;类与接口:类与接口之间就是实现关系,可以单实现,也可以多实现;接口与接口: 接口与接口之间就是继承关系,可以单继承,也可以多继承;(3) 设计理念:接口对应得设计模式就是 简洁工厂设计模式 ,抽象类对象得设计模式就是模板设计模式;(5)必需实现抽象类或接口得全部抽象方法才可以实例化;黑马程序员入学面试题32 、 不借用第三方变量,互换两个变量;n=nm;m=nm;/nmm一个数异或另一个数两次,仍就是得原先那个数n=nm/nnm33 、 传统 for 与增强 for 有什么区分呢?1、 增
15、强 for 对集合进行遍历,集合不能为空;只能猎取集合元素,但就是不能对集合进行操作;增强for 有一个局限性,必需要有被遍历得目标;2、 迭代器除了遍历,仍可以进行remove 集合中元素得动作;假如就是用 ListIterator ,仍可以在遍历过程中进行增删改查得动作;建议在遍历数组得时候,仍就是期望就是用传统for ;由于传统 for 可以定义角标;1、增强 for 循环与 iterator 遍历得成效就是一样得,也就说增强for 循环得内部也就就是调用 iteratoer实现得,但就是增强 for 循环有些缺点,例如不能在增强循环里动态得删除集合内容;不能猎取下标等;2、ArrayL
16、ist 由于使用数组实现,因此下标明确,最好使用一般循环;34 、 Collection 与 Colections 得区分就是什么?Collection 就是一个单列集合得顶层接口,它就是List 、Set、Queue 等接口得父接口;在这个接口中,定义了集合类中通用得方法;Collections 就是针对集合操作得工具类,有对集合进行排序与二分查找等静态方法;37 、 线程得状态: 线程得五种状态:1) 新建 new用 new 语句创建得线程对处于新建状态,此时它与其它Java 对象一样,仅仅在 Heap 中被安排了内存;当一个线程处于新建状态时,它仅仅就是一个空得线程对象,系统不为它安排资
17、源;Thread t = new Threadnew Runner;2) 就绪 Runnable程序通过线程对象调用启动方法start 后,系统会为这个线程安排它运行时所需得除处理器之外得全部系统资源;这时,它处在随时可以运行得状态, 在随后得任意时刻,只要它获得处理器即会进入运行状态;t、 start3) 运行 Running处于这个状态得线程占用CPU,执行程序代码;在并发环境中,假如运算机只有一个 CPU,那么任何时刻只会有一个线程处于这个状态;假如运算机中有多个 CPU,那么同一时刻可以让几个线程占用不同得CPU,使它们都处于运行状态,只有处于就绪状态得线程才有机会转到运行状态;4)
18、堵塞 Blocked 堵塞状态就是指线程由于某些缘由舍弃 CPU,临时停止运行;当线程处于堵塞状态时, Java 虚拟机不会给线程安排 CPU,直到线程重新进入就绪状态, 它才有机会转到运行状态;堵塞状态可分为以下 3 种:位于对象等待池中得堵塞状态Blocked in objects wait pool:当线程处于运行状态时, 假如执行了某个对象得wait 方法, Java 虚拟机就会把线程放到这个对象得等待池中;位于对象锁池中得堵塞状态Blocked in objects lock pool:当线程处于运行状态,试图获得某个对象得同步锁时,假如该对象得同步锁已经被其她线程占用,Java 虚
19、拟机就会把这个线程放到这个对象得锁池中;其她堵塞状态 Otherwise Blocked:当前线程执行了 sleep 方法,或者调用了其她线程得 join 方法,或者发出了 I/O 恳求时,就会进入这个状态;当一个线程执行System 、out 、println 或者 System 、in 、read 方法时就是,就会发出一个I/O恳求,该线程舍弃 CPU,进入堵塞状态,直到I/O 处理完毕,该线程才会复原执行;5) 死亡 Dead 当线程退出 run 方法时,就进入死亡状态,该线程终止生命周期;线程有可能就是正常执行完 run 方法而退出,也有可能就是遇到反常而退出;不管线程就是正常终止仍就
20、是反常终止,都不会对其她线程造成影响;40 、 集合集合名称阅读技巧:JDK1、2 显现得集合框架中常用得子类对象前缀名就是结构名,后缀名就是体系名;ArrayList :数组结构,瞧到 Array 就知道查询速度快, 瞧到 List 就知道可以又重复元素,可以增删改查LinkedList :链表结构,增删快HashSet :哈希结构,查询速度更快,不保证有序,不行以重复,必需掩盖hashCode与 equals 方法LinkedHashSet :链表加哈希结构,可以实现有序TreeSet :二叉树结构,可以排序;有两种方法:1、自然排序 compable ,2、比较器comparator J
21、ava供应了只包含一个 compareTo 方法得 Comparable 接口;这个方法可以个给两个对象排序;详细来说,它返回负数,0,正数来说明输入对象小于,等于, 大于已经存在得对象;Java 供应了包含 compare 与 equals 两个方法得 Comparator 接口; compare 方法用来给两个输入参数排序,返回负数,0,正数说明第一个参数就是小于,等于,大于 其次个参数; equals 方法需要一个对象作为参数,它用来打算输入参数就是否与comparator相等;只有当输入参数也就是一个comparator并且与当前 comparator得排序结果就是相同得时候,这个方法
22、才返回true 、ArrayList 与 Vector 都就是使用数组方式储备数据,此数组元素数大于实际储备得数据以便增加与插入元素,答应直接按序号索引元素、但就是 插入元素要涉及数组元素移动等内存操作 ,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized方法(线程安全), 通常性能上较 ArrayList 差,Vector 属于遗留容器,现在已经不举荐使用,LinkedList使用双向链表实现储备(将内存中零散得内存单元通过附加得引用关联起来, 形成一个可以按序号索引得线性结构,这种链式储备方式与数组得连续储备方式相比,其实对内存得利用率更高),按序号索引数据需要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 JavaSE 知识点 总结
限制150内