《Java开发人员面试宝典.docx》由会员分享,可在线阅读,更多相关《Java开发人员面试宝典.docx(111页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、开发人员员面试宝宝典(Javva版)八维云计计算学院院20一五五-3-24目录1基础篇篇61.1JJavaa介绍61.2JJ2SEE、J2EEE、J2MME三者者区别661.3JJDK、JREE、JVMM区别61.4JJDK常常用的包包71.5JJavaa中的基基本数据据类型771.6JJavaa中swiitchh接受的的几种数数据类型型81.7SStriing、StrringgBuffferr、StrringgBuiildeer区别别81.8CCharr型变量量能不能能存储一一个汉字字?81.9=和equualss方法的的区别881.100静态变变量和实实例变量量的区别别91.111Intt
2、egeer和intt的区别别91.122Matth.rrounnd()的使用用91.一三三构造器器是否可可以被重重写91.144抽象类类和接口口的区别别91.一五五新建对对象有几几种方式式101.166&和&的区区别1001.177面向对对象什么么特性1111.一八八面向对对象中多多态特性性111.199Lisst,sset,Colllecctioon,CColllecttionns1111.200线程和和进程的的区别1111.211Jvmm内存结结构1221.222内存泄泄露和内内存溢出出121.233解析xmml文件件的几种种技术1121.244Domm4j与与saxx之间的的对比一一三1
3、.255javva EExceeptiion体体系结构构一三1.266抽象类类和接口口的区别别141.277修饰符符的作用用141.288HasshMaap和Hasshtaablee的区别别141.299字节流流和字符符流的区区别一五五1.300运行异异常和检检查异常常有何不不同一五五1.311errror和和exccepttionn的区别别一五1.322举例最最常用的的五个运运行时异异常一五五1.333Sleeep和和waiit的区区别一五五1.344多线程程有几种种实现方方式1661.355启动一一个线程程用ruun还是是staart1161.366Lisst和Mapp的区别别161.37
4、7说出ArrrayyLisst,VVecttor, LiinkeedLiist的的存储性性能和特特性1771.388Javva序列列化1771.399堆和栈栈的区别别171.400什么时时候用断断言1771.411Javva中会会有内存存泄露吗吗一八1.422简述反反射的作作用一八八2Serrvleet篇192.1SServvlett概述1992.2九九大隐式式对象2202.3ppagee和paggeCoonteext的的区别2202.4GGET和和POSST的区区别2002.5转转发与重重定向的的区别2202.6四四大作用用域介绍绍212.7ssesssionn和coookiee的区别别21
5、2.8rrequuestt和sesssioon的区区别2112.9报报错状态态码2222.100常见协协议及默默认的端端口号2222.111对过滤滤器的理理解2223脚本篇篇233.1oonreeadyy和onlloadd的区别别233.2对对jQuueryy简单介介绍2333.3XXML和和Jsoon的特特点2333.4对对JQuueryy中Ajaax介绍绍243.5对对Ajaax介绍绍244框架篇篇254.1SStruuts11运行原原理2554.2SStruuts22运行原原理2554.3HHibeernaate运运行原理理264.4SSpriing运运行原理理274.5SSpriing
6、MMVC运运行原理理274.6SStruuts11和Strrutss2区别别284.7SSpriingMMVC、Strrutss1和Strrutss2区别别294.8SStruuts22在的tyype类类型2994.9SStruuts22的常用用标签2294.100Hibbernnatee可gett和loaad的区区别3004.111Hibbernnatee、Ibaatiss、JDBBC区别别304.122Hibbernnatee与JDBBC区别别304.一三三Hibbernnatee两大配配置文件件304.144Hibbernnatee中的事事务处理理314.一五五Hibbernnatee三
7、种状状态及如如何转换换314.166Hibbernnatee中的五五大核心心接口3314.177Hibbernnatee缓存概概述3224.一八八SSHH概述3224.199分页步步骤3334.200如何防防止表单单重复提提交3334.211通过Sttrutts2来来解决表表单重复复提交3334.222拦截器器335数据库库篇3555.1JJDBCC连接数数据库步步骤3555.2数数据库连连接池3355.3jjdbcc分段批批量提交交的时候候出现异异常怎么么处理?355.4JJDBCC批量处处理数据据365.5OOraccle分分页语句句365.6MMySQQL分页页语句3365.7OOrac
8、cle基基本数据据类型3375.8iid、rowwid、rowwnumm的区别别375.9主主键和唯唯一索引引的区别别?3775.100Preeparredsstattemeent和和staatemmentt的区别别385.111数据库库三范氏氏385.122视图概概述3885.一三三存储过过程概述述385.144索引概概述3995.一五五Ibaatiss批量4006业务场场景篇4426.1SSpriing的的概述4426.2事事务概述述436.3权权限概述述446.4OOSCaachee业务场场景4446.5线线程概述述446.6AAjaxx请求Seessiion超超时问题题456.7JJa
9、vaa线程池池概述4466.8OOSCaachee概述4776.9OOSCaachee+auutoccompplette+单单例业务务场景4476.100缓存概概述4776.111实现页页面静态态化业务务场景4486.122serrvleet线程程安全描描述4886.一三三(jbbpm44)工作作流引擎擎描述:496.144JPBBM业务务场景5506.一五五Antt描述5006.166FreeeMaarkeer描述述516.177webbSerrvicce描述述516.一八八oraaclee索引概概述5226.199oraaclee存储过过程5336.200Junnit 业务场场景5336.
10、211Apaachee+Toomcaat 实实现负载载均衡及及seeesioon复制制536.222Antt业务场场景5446.233mavven业业务场景景556.244buggfreee的操操作步骤骤556.255Axiis2 的配置置566.266sprringg定时器器566.277Extt概述5776.288luccenee的概述述576.299线程池池作用5586.300jbppm是如如何和sspriing进进行整合合586.311Tommcatt优化5886.322memmcacchedd的介绍绍607优化篇篇607.1代代码优化化607.2业业务优化化617.3ssql优优化6
11、117.4防防sqll注入6337.5数数据库中中常用术术语6557.6深深入jaava虚虚拟机以以及大数数据6551 基础篇1.1 Javaa介绍Javaa是面向向对象的的,跨平平台的,它它通过jjavaa虚拟机机来进行行跨平台台操作,它它可以进进行自动动垃圾回回收的(c语言是通过人工进行垃圾回收)。javaa还会进进行自动动分配内内存。(c语言是通过指定进行分配内存的),只需要new一个对象,这个对象占用了多少空间,不需要我们来管,java虚拟机负责管这些,用完之后也不需要我们来释放,java虚拟机会自动释放。1.2 J2SEE、J2EEE、J2MME三者者区别Javaa SEE = Ja
12、vva SStanndarrd EEdittionn=j22se = jjavaa 标标准版Javaa EEE = Javva EEnteerprrisee Edditiion=j2eee= javva 企企业版Javaa MEE = Javva MMobiile Ediitioon=jj2mee = javva 移动版版三者特点点:J2SEE主要用用于桌面面程序(swing),控制台开发(main程序)。J2EEE企业级级开发(JSP,EJB,Spring MVC,Struts,hibernate,ibatis等),用于企业级软件开发,网络开发,web开发。J2MEE嵌入式式开发(手机,小小
13、家电,PDA)。苹果的ios,黑莓。三者之间间的关系系:Javaa SEE(Javva PPlattforrm,Staandaard Ediitioon,Javva标准准版)就就是基于于JDKK和JREE的。Jaava SE为为Javva EEE提供供了基础础。Jaava EE除除了基于于我们这这个所谓谓的Jaava SE外外,还新新加了企企业应用用所需的的类库。1.3 JDK、JREE、JVMM区别Jdk【Javva DDeveeloppmennt TToollKitt】就是是javva开发发工具箱箱, JJDK是是整个JJAVAA的核心心里边包包含了jjre,它它除了包包含jrre之外外还
14、包含含了一些些javvac的的工具类类,把jjavaa源文件件编译成成claass文文件,jjavaa文件是是用来运运行这个个程序的的,除此此之外,里里边还包包含了jjavaa源生的的APII,javva.llangg.inntegger在在rt的jarr包里边边【可以以在项目目中看到到】,通通过rtt这个jaar包来来调用我我们的这这些ioo流写入入写出等等。JDK有有以下三三种版本本:J2SEE,staandaard ediitioon,标标准版,是是我们通通常用的的一个版版本J2EEE,entterppsisse eedtiion,企企业版,使使用这种种JDKK开发J22EE应应用程序序
15、J2MEE,miccro edttionn,主要要用于移移动设备备、嵌入入式设备备上的jjavaa应用程程序Jre【Javva RRunttimee Ennvirromeentaal】是是javva运行行时环境境,那么么所谓的的javva运行行时环境境,就是是为了保保证jaava程程序能够够运行时时,所必必备的一一基础环环境,也也就是它它只是保保证jaava程程序运行行的,不不能用来来开发,而而jdkk才是用用来开发发的,所所有的JJavaa程序都都要在JJRE下下才能运运行。包括JVVM和JAVVA核心心类库和和支持文文件。与与JDKK相比,它它不包含含开发工工具编译器器、调试试器和其其它工
16、具具。Jrre里边边包含jjvm。Jvm:【Jaava Virrtuaal MMechhinaal】因因为jrre是javva运行行时环境境,jaava运运行靠什什么运行行,而底底层就是是依赖于于jvmm,即jaava虚虚拟机,java虚拟机用来加载类文件,java中之所以有跨平台的作用,就是因为我们的jvm。三者关系系:J22se是是基于jjdk和和jree,JDKK是整个个JAVVA的核核心里边边包含了了jree,Jree里边包包含jvvm。1.4 JDK常常用的包包javaa.laang: 这个个是系统统的基础础类,比比如Sttrinng、Matth、Inttegeer、Sysstemm
17、和Thrreadd,提供供常用功功能。javaa.ioo: 这这里面是是所有输输入输出出有关的的类,比比如文件件操作等等。javaa.neet: 这里面面是与网网络有关关的类,比比如URRL,UURLCConnnecttionn等。javaa.uttil : 这这个是系系统辅助助类,特特别是集集合类CColllecttionn,Liist,Mapp等。javaa.sqql: 这个是是数据库库操作的的类,CConnnecttionn,Staatemmemtt,RessulttSett等。1.5 Javaa中的基基本数据据类型数据类型型大小bytee(字节节)1(8位位)shott(短整整型)2(
18、166位)int(整型)4(322位)longg(长整整型)8(322位)floaat(浮浮点型)4(322位)doubble(双精度度)8(644位)charr(字符符型)2(166位)boolleann(布尔尔型)1位附加:Striing是是基本数数据类型型吗?(Strringg不是基基本数据据类型)Striing的的长度是是多少,有有限制?(长度度受内存存大小的的影响)1.6 Javaa中swiitchh接受的的几种数数据类型型shorrt, innt, byyte,chaarenumm(JDKK1.55以后支支持)Striing(JDKK1.77以后支支持)1.7 Striing、St
19、rringgBuffferr、StrringgBuiildeer区别别Striing字符串常常量不可变使用字符符串拼接接时是不不同的22个空间间。StriingBBufffer字符串变变量可变线程安全全,字符符串拼接接直接在在字符串串后追加加。StriingBBuillderr字符串变变量可变非线程安安全,字字符串拼拼接直接接在字符符串后追追加。1、 StriingBBuillderr执行效效率高于于StrringgBuffferr高于Sttrinng。2、 Striing是是一个常常量,是是不可变变的,所所以对于于每一次次+=赋值值都会创创建一个个新的对对象,SStriingBBufffer
20、和和StrringgBuiildeer都是是可变的的,当进进行字符符串拼接接时采用用apppendd方法,在在原来的的基础上上进行追追加,所所以性能能比Sttrinng要高高,又因因为SttrinngBuuffeer是线线程安全全的而SStriingBBuillderr是线程程非安全全的,所所以SttrinngBuuildder的的效率高高于SttrinngBuuffeer。3、 对于大数数据量的的字符串串的拼接接,采用用StrringgBuffferr,SttrinngBuuildder。4、 另一种说说法,JJDK11.6做做了优化化,通过过Strringg声明的的字符串串在进行行用“+”
21、进行拼拼接时,底底层调用用的是SStriingBBufffer,所所以性能能上基本本和后两两者没有有什么区区别。1.8 Charr型变量量能不能能存储一一个汉字字?charr型变量量是用来来存储UUniccodee编码的的字符的的,unnicoode编编码字符符集中包包含了汉汉字,补补充说明明:unnicoode编编码占用用两个字字节,所所以,ccharr类型的的变量也也是占用用两个字字节。1.9 =和eequaals方方法的区区别“=”如果前前后比较较的是对对象,则则比较的的是对象象的地址址,如果果前后是是数字,则则比较的的数值。“equualss”如果前前后是对对象,比比较的是是对象的的地
22、址。如果比比较的对对象重写写了eqqualls方法法,则有有可能比比较的是是“值”。像八八个基本本数据类类型的封封装类、Strringg、Fille、Datte都比比较的是是值。1.10 静态变量量和实例例变量的的区别在语法定定义上的的区别:静态变变量前要要加sttatiic关键键字,而而实例变变量前则则不加。在程序运运行时的的区别:实例变变量属于于某个对对象的属属性,必必须创建建了实例例对象,其其中的实实例变量量才会被被分配空空间,才才能使用用这个实实例变量量。静态态变量不不属于某某个实例例对象,而而是属于于类,所所以也称称为类变变量,只只要程序序加载了了类的字字节码,不不用创建建任何实实例
23、对象象,静态态变量就就会被分分配空间间,静态态变量就就可以被被使用了了。总之,实实例变量量必须创创建对象象后才可可以通过过这个对对象来使使用,静静态变量量则可以以直接使使用类名名来引用用。1.11 Inteegerr和intt的区别别int是是javva提供供的8种原始始数据类类型之一一,意思思整型,占占用4字节。Inteegerr是javva为intt提供的的封装类类,是引引用数据据类型。int的的默认值值为0,而Inntegger的的默认值值为nuull,即即Inttegeer可以以区分出出未赋值值和值为为0的区别别,innt则无无法表达达出未赋赋值的情情况。1.12 Mathh.roou
24、ndd()的的使用Mathh类中提提供了三三个与取取整有关关的方法法:ceeil、flooor、rouund,这这些方法法的作用用与它们们的英文文名称的的含义相相对应,例例如,cceill的英文文意义是是天花板板,该方方法就表表示向上上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取
25、整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。1.13 构造器是是否可以以被重写写构造器CConsstruuctoor不能能被继承承,因此此不能重重写Ovverrridee,但可可以被重重载Ovverlloadd。1.14 抽象类和和接口的的区别含有abbstrractt修饰符符的cllasss即为抽抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete
26、)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口(iinteerfaace)可可以说成成是抽象象类的一一种特例例,接口口中的所所有方法法都必须须是抽象象的。接接口中的的方法定定义默认认为puubliic aabsttracct类型型,接口口中的成成员变量量类型默默认为ppubllic staaticc fiinall。下面比较较一下两两者的语语法区别别:1. 抽抽象类可可以有构构造方法法,接口口中不能能有构造造方法。2. 抽抽象类中中可以有有普通成成员变量量,接口口中没有有普通成成员变量量3. 抽抽
27、象类中中可以包包含非抽抽象的普普通方法法,接口口中的所所有方法法必须都都是抽象象的,不不能有非非抽象的的普通方方法。4. 抽抽象类中中的抽象象方法的的访问类类型可以以是puubliic,prootecctedd和默认认类型,但但接口中中的抽象象方法只只能是ppubllic类类型的,并并且默认认即为ppubllic absstraact类类型。5. 抽抽象类中中可以包包含静态态方法,接接口中不不能包含含静态方方法6. 抽抽象类和和接口中中都可以以包含静静态成员员变量,抽抽象类中中的静态态成员变变量的访访问类型型可以任任意,但但接口中中定义的的变量只只能是ppubllic staaticc fii
28、nall类型,并并且默认认即为ppubllic staaticc fiinall类型。7. 一一个类可可以实现现多个接接口,但但只能继继承一个个抽象类类。下面接着着再说说说两者在在应用上上的区别别:接口更多多的是在在系统架架构设计计方法发发挥作用用,主要要用于定定义模块块之间的的通信契契约;而抽象类类在代码码实现方方面发挥挥作用,可可以实现现代码的的重用。1.15 新建对象象有几种种方式1. 使使用neew关键键字2. 使使用反射射,调用用newwInsstannce3. 使使用cllonee方法4. 使使用序列列化与反反序列化化5. 动动态代理理(Prroxyy类和CGGLIBB)1.16
29、&和&的区别别&和&都可以以用作逻逻辑与的的运算符符,&为短路路与,&不是短短路与。另外&可可以做为为整数的的位运算算符例1:对对于iff(sttr != nnulll& !sttr.eequaals(“”)表达达式,当当strr为nulll时,后后面的表表达式不不会执行行,所以以不会出出现NuullPPoinnterrExccepttionn如果将将&改为为&,则会会抛出NNulllPoiinteerExxcepptioon异常常。例2:IIf(xx=333 &+yy0) y会会增长,if(x=33 & +y0)不会增长。备注:这这道题先先说两者者的共同同点,再再说出&和&的特殊殊之处,并并
30、列举一一些经典典的例子子来表明明自己理理解透彻彻深入、实际经经验丰富富。1.17 面向对象象什么特特性对于面向向对象的的特性,一一般有两两种说法法:一种种是有三三大特性性,分别别是封装装,继承承,多态态,一种种说法是是有四大大特性,封封装,继继承,多多态,抽抽象。讲讲三大特特性的时时候更多多一些,注注意,这这里的提提问方式式是面向向对象的的特性,而而不是JJavaa的特性性。1.18 面向对象象中多态态特性多态是面面向对象象很重要要的一个个特性,转转型是多多态的具具体体现现。多态态还包括括重载和和重写。转型:转转型分为为向上转转型和向向下转型型。向上上转型是是子类对对象转换换成父类类对象,直直
31、接转就就可以,向向下转型型是父类类对象转转换成子子类对象象,这需需要强转转,在转转换过程程中要保保证此父父类对象象“本体”是由子子类对象象实例化化的。重载:重重载发生生在同一一个类中中,在该该类中如如果存在在多个同同名方法法,但是是方法的的参数类类型和个个数不一一样,那那么说明明该方法法被重载载了。重写:重重写发生生在子类类继承父父类的关关系中,父父类中的的方法被被子类继继承,方方法名,返返回值类类型,参参数完全全一样,但但是方法法体不一一样,那那么说明明父类中中的该方方法被子子类重写写了。1.19 Listt,seet,CColllecttionn,Coolleectiionss1、 Lis
32、tt和Sett都是接接口,他他们都继继承于接接口Coolleectiion,Lisst是一一个有序序的可重重复的集集合,而而Sett的无序序的不可可重复的的集合。Colllecctioon是集集合的顶顶层接口口,Coolleectiionss是一个个封装了了众多关关于集合合操作的的静态方方法的工工具类,因为构构造方法法是私有有的,所所以不能能实例化化。2、 Listt接口实实现类有有ArrrayLListt,LiinkeedLiist,Vecctorr。ArrrayLListt和Vecctorr是基于于数组实实现的,所以查查询的时时候速度度快,而而在进行行增加和和删除的的时候速速度较慢慢Lin
33、nkeddLisst是基基于链式式存储结结构,所所以在进进行查询询的时候候速度较较慢但在在进行增增加和删删除的时时候速度度较快。又因为为Vecctorr是线程程安全的的,所以以他和AArraayLiist相相比而言言,查询询效率要要低。1.20 线程和进进程的区区别1、 进程定义义的是应应用程序序与应用用程序之之间的边边界,通通常来说说一个进进程就代代表一个个与之对对应的应应用程序序。不同同的进程程之间不不能共享享代码和和数据空空间,而而同一进进程的不不同线程程可以共共享代码码和数据据空间。2、 一个进程程可以包包括若干干个线程程,同时时创建多多个线程程来完成成某项任任务,便便是多线线程。实实
34、现线程程的两种种方式:继承TThreead类类,实现现Runnablle接口口。1.21 Jvm内内存结构构Javaa虚拟机机的内存存结构分分为堆(heaap)和和栈(sstacck),堆堆里面存存放是对对象实例例也就是是neww出来的的对象。栈里面面存放的的是基本本数据类类型以及及引用数数据类型型的地址址。对于于所谓的的常量是是存储在在方法区区的常量量池里面面。堆是先进进先出栈是先进进后出1.22 内存泄露露和内存存溢出内存泄露露 (mmemoory leaak),是是指应用用程序在在申请内内存后,无无法释放放已经申申请的内内存空间间。一次次内存泄泄露危害害可以忽忽略,但但如果任任其发展展最
35、终会会导致内内存溢出出(ouut oof mmemoory)。如读取取文件后后流要进进行及时时的关闭闭以及对对数据库库连接的的释放。内存溢出出(ouut oof mmemoory)是是指应用用程序在在申请内内存时,没没有足够够的内存存空间供供其使用用。如我我们在项项目中对对于大批批量数据据的导入入,采用用分段批批量提交交的方式式。1.23 解析xmml文件件的几种种技术解析xmml的几几种技术术1. dom44j 、2.ssax、3.jjaxbb、4.jjdomm、5.ddom1、 dom44jdom44j是一一个Jaava的的XMLL APPI,类类似于jjdomm,用来来读写XXML文文件
36、的。domm4j是是一个非非常优秀秀的Jaava XMLL APPI,具具有性能能优异、功能强强大和极极端易用用使用的的特点,同同时它也也是一个个开放源源代码的的软件。2、 saxSAX(simmplee APPI ffor XMLL)是一一种XMML解析析的替代代方法。相比于于DOMM,SAXX是一种种速度更更快,更更有效的的方法。它逐行行扫描文文档,一一边扫描描一边解解析。而而且相比比于DOOM,SAXX可以在在解析文文档的任任意时刻刻停止解解析,但但任何事事物都有有其相反反的一面面,对于于SAXX来说就就是操作作复杂。3、 JaxbbJAXBB(Javva AArchhiteectuur
37、e forr XMML BBinddingg) 是是一个业业界的标标准,是是一项可可以根据据XMLL Scchemma产生生Javva类的的技术。该过程程中,JJAXBB也提供供了将XXML实实例文档档反向生生成Jaava对对象树的的方法,并并能将JJavaa对象树树的内容容重新写写到XMML实例例文档。从另一一方面来来讲,JJAXBB提供了了快速而而简便的的方法将将XMLL模式绑绑定到JJavaa表示,从从而使得得Javva开发发者在JJavaa应用程程序中能能方便地地结合XXML数数据和处处理函数数。1.24 Dom44j与saxx之间的的对比dom44j不适适合大文文件的解解析,因因为它
38、是是一下子子将文件件加载到到内存中中,所以以有可能能出现内内存溢出出,saax是基基于事件件来对xxml进进行解析析的,所所以他可可以解析析大文件件的xmml,也也正是因因为如此此,所以以domm4j可可以对xxml进进行灵活活的增删删改查和和导航,而而saxx没有这这么强的的灵活性性,所以以saxx经常是是用来解解析大型型xmll文件,而而要对xxml文文件进行行一些灵灵活(ccrudd)操作作就用ddom44j。1.25 javaa Exxcepptioon体系系结构javaa 异常常是程序序运行过过程中出出现的错错误。JJavaa把异常常当作对对象来处处理,并并定义一一个基类类javva
39、.llangg.Thhrowwablle作为为所有异异常的超超类。在在Javva AAPI中中定义了了许多异异常类,分为两两大类,错错误Errrorr和异常常Exccepttionn。其中中异常类类Exccepttionn又分为为运行时时异常(RunntimmeExxcepptioon)和和非运行行时异常常(非runntimmeExxcepptioon),也也称之为为不检查查异常(Unchecked Exception)和检查异常(Checked Exception)。1、 Erroor与Exccepttionn Erroor是程程序无法法处理的的错误,比比如OuutOffMemmoryyEr
40、rror、ThrreaddDeaath等等。这些些异常发发生时,Java虚拟机(JVM)一般会选择线程终止。Exceeptiion是是程序本本身可以以处理的的异常,这这种异常常分两大大类运行行时异常常和非运运行时异异常。程程序中应应当尽可可能去处处理这些些异常。2、 运行时异异常和非非运行时时异常a) 运行时异异常: 都是RuuntiimeEExceeptiion类类及其子子类异常常:i. IndeexOuutOffBouundssExccepttionn 索引引越界异异常ii. AritthmeeticcExccepttionn:数学学计算异异常iii. NulllPoiinteerExxc
41、epptioon:空空指针异异常iv. ArraayOuutOffBouundssExccepttionn:数组组索引越越界异常常v. ClasssNootFoounddExccepttionn:类文文件未找找到异常常vi. ClasssCaastEExceeptiion:造型异异常(类类型转换换异常)这些异常常是不检检查异常常(Unncheeckeed EExceeptiion),程程序中可可以选择择捕获处处理,也也可以不不处理。这些异异常一般般是由程程序逻辑辑错误引引起的。非运行时时异常:是RunntimmeExxcepptioon以外外的异常常,类型型上都属属于Exxcepptioon类
42、及及其子类类。从程程序语法法角度讲讲是必须须进行处处理的异异常,如如果不处处理,程程序就不不能编译译通过。如:IOExxcepptioon、文文件读写写异常FileeNottFouundEExceeptiion:文件未未找到异异常EOFEExceeptiion:读写文文件尾异异常MalfformmedUURLEExceeptiion:URLL格式错错误异常常SockketEExceeptiion:Socckett异常SQLEExceeptiion:SQLL数据库库异常1.26 抽象类和和接口的的区别1. 抽象类由由pubblicc abbstrractt修饰,接接口由ppubllic intt
43、erffacee修饰。2. 类(抽象象类也是是类)只只支持单单继承,但但接口可可以实现现多个接接口。接接口不是是类,接接口和类类同属于于Javva中的的一个类类型。3. 抽象类里里由构造造器、常常量、变变量、抽抽象方法法、普通通方法构构成,接接口里只只包括常常量和抽抽象方法法,没有有构造器器和普通通方法。4. 是否是使使用抽象象类还是是接口,主主要看想想要实现现什么样样的事情情,如果果侧重于于描述事事务,应应该选择择抽象类类,如果果侧重于于定义功功能,建建议选择择使用接接口。1.27 修饰符的的作用修饰符同一个类类中同一个包包中子类中全局privvateeYesDefaaulttYesYesp
44、rottecttedYesYesYespubllicYesYesYesYes1.28 HashhMapp和Hasshtaablee的区别别1、 HashhMapp和Hasshtaablee是Mapp接口下下的两个个实现类类,因为为Mapp对象是是键值对对的,所所以此两两类也是是键值对对的。2、 HashhMapp是线程程非安全全的,HHashhtabble是是线程安安全的,所所以HaashMMap的的效率高高于Haashttablle。3、 HashhMapp允许键键或值为为nulll,键键最多只只可以有有一个为为nulll,值值不受限限制。而而Hasshtaablee键或值值都不许许为nuu
45、ll。注意:HHashhtabble中中的“t”是小写写的。1.29 字节流和和字符流流的区别别以strreamm结尾都都是字节节流,以以reaaderr和wriiterr结尾都都是字符符流,两两者的区区别就是是读写的的时候一一个是按按字节读读写,一一个是按按字符。在实际际使用时时差不多多。在读写文文件需要要对内容容按行处处理,比比如比较较特定字字符,处处理某一一行数据据的时候候一般会会选择字字符流。只是读读写文件件,和文文件内容容无关的的,一般般选择字字节流。1.30 运行异常常和检查查异常有有何不同同异常表示示程序运运行过程程中可能能出现的的非正常常状态,运运行时异异常表示示虚拟机机的通常
46、常操作中中可能遇遇到的异异常,是是一种常常见运行行错误。javva编译译器要求求方法必必须声明明抛出可可能发生生的非运运行时异异常,但但是并不不要求必必须声明明抛出未未被捕获获的运行行时异常常。1.31 erroor和exccepttionn的区别别erroor 表表示恢复复不是不不可能但但很困难难的情况况下的一一种严重重问题。比如说说内存溢溢出,不不可能指指望程序序能处理理这样的的情况。exccepttionn表示一一种设计计或实现现问题,也也就是说说,它表表示如果果程序运运行正常常,从不不会发生生的情况况。1.32 举例最常常用的五五个运行行时异常常NulllPoiinteerExxcepptioon空指指针、ArrrayIIndeexOuutOffBouundssExccepttionn数组越越界、ClaassCCasttExccepttionn 类转转换异常常、IlllegeelArrgummenttExccepttionn输入输输出异常常、SeccuriityEExceeptiion 权限不不够。1.33 Sleeep和waiit的区区别(网上的的答案:sleeep是是线程类类(Thhreaad)的的方法,导导致此线