您好,欢迎访问三七文档
A)这个程序会输出什么?publicclassTest{static{System.out.println(***);}publicstaticfinalStringa=sss;}publicclassTestMain{publicstaticvoidmain(String[]args){System.out.println(Test.a);}}如果Test和TestMain写在一个java文件中,那么这段程序是不能运行的,会出错,因为在一个java文件中不能有两个public修饰的类。如果Test和TestMain是两个独立的java文件,那么这段程序的运行结果是sss。B)以下程序输出什么publicclassTestException{publicintthowSth(){try{System.out.println(beforethrow);if(true){thrownewException();}return0;}catch(Exceptione){return1;}finally{System.out.print(finally);}}}TextException这个类没有main方法,不能独立的运行,所以不会输出任何信息。C)这行代码究竟创建了几个String对象?Stringstr=newString(abc);如果在这句代码执行之前,StringPool里面有了”abc”,那么这句代码执行之后,将会创建一个对象,如果在这句代码只想之前,StringPool里面没有”abc”,那么这句代码执行之后便会创建两个新的对象。D)以下代码输出什么?(注意带下划线部分)classForTestInherit{publicstaticintSTATIC_A=0;publicintnormal_b=10;publicvoiddoTest(){System.out.println(thisisparent);}}classForTestInheritChildextendsForTestInherit{publicstaticintSTATIC_A=1;publicintnormal_b=11;publicvoiddoTest(){System.out.println(thisischild);}}publicclassTestInherit{publicstaticvoidmain(String[]args){ForTestInheritobjParent=newForTestInherit();ForTestInheritobjChild=newForTestInheritChild();System.out.println(ForTestInherit.STATIC_A);System.out.println(ForTestInheritChild.STATIC_A);System.out.println(objParent.STATIC_A);System.out.println(objChild.STATIC_A);System.out.println(objParent.normal_b);System.out.println(objChild.normal_b);objParent.doTest();objChild.doTest();}}01001010thisisparentthisischildE)列出java反射机制的一个使用场景(比如,你看到的那些项目的那些功能用到了java反射机制)举个例子:在用jdbc链接MySql时Class.forName(“com.mysql.jdbc.Driver”);意思就是返回一个com.mysql.jdbc.Driver的类对象F-1)写出一个int数组的排序函数(从小到大),假设数组中所有的元素都已经初始化,并且每个数字都不相同publicvoidsort(int[]array){inttemp=0;for(inti=0;iarray.length;i++){for(intj=i;jarray.length;j++){if(array[i]array[j]){temp=array[i];array[i]=array[j];array[j]=temp;}}}}F-2)接上题,数组已经排序完毕,要求按折半查找法查出某个值value在数组中的下标,假设value肯定在数组中,给出代码先写一方法:publicintbinarySearch(int[]a,intvalue),然后调用该方法,便可。具体方法如下:publicintbinarySearch(int[]array,intvalue){intstartPos=0;intendPos=array.length-1;intmiddlePos=(startPos+endPos)/2;while(startPos=endPos){if(array[middlePos]==value){returnmiddlePos;}elseif(array[middlePos]value){endPos=middlePos-1;}elseif(array[middlePos]value){startPos=middlePos+1;}middlePos=(startPos+endPos)/2;}return-1;}F-3)接上题,写出折半查找法的时间复杂度数组的长度是N=array.length在最坏的情况下,总共需要进行logN次比较,那么折半查找法的时间复杂度就是O(logN)G)写出Servlet中,forward和redirect的区别redirect方式:向客户浏览器发送页面重定向指令,跳转后浏览器地址栏变化,页面的路径是绝对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递forward方式:直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,,跳转后浏览器地址栏不会变化,页面的路径是相对路径。forward方式只能跳转到本web应用中的页面上,使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttributeH)写出session和cookie的区别session是记录在客户端的,session是记录在服务器端的。session关掉浏览器即消失,cookie可以写在用户的电脑里,失效期限与cookie设置有关。一般关掉浏览器不会消失,和时间设置有关。I)jsp页面可以引用的隐含对象一共有几个?Jsp页面一共有9个隐含对象写出其中至少4个request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。response对象:response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.application对象:application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。Z)翻译(本文关于java泛型)(代码部分可以不翻译,用随意的标记带过)WhenyoutakeanelementoutofaCollection,youmustcastittothetypeofelementthatisstoredinthecollection.Besidesbeinginconvenient,thisisunsafe.Thecompilerdoesnotcheckthatyourcastisthesameasthecollection'stype,sothecastcanfailatruntime.当你从集合里面取出一个元素时,你必须先将它转型成你之前存进时的类型,除了造成不便,而且这样还不安全,编译器不会检查你转型后的类型是否符合几集合的类型,所以在转型后的类型在运行期间有可能出错。Genericsprovidesawayforyoutocommunicatethetypeofacollectiontothecompiler,sothatitcanbechecked.Oncethecompilerknowstheelementtypeofthecollection,thecompilercancheckthatyouhaveusedthecollectionconsistentlyandcaninsertthecorrectcastsonvaluesbeingtakenoutofthecollection.泛型为你提供了一种与编译器交互集合类型的方式,以至于集合存储的类型能够被检查。一旦编译器知道了集合中元素的类型,编译器就能够一直的检查你正在使用的集合存储类型,而且当元素被取出集合时,还能够为元素插入正确类型的值。HereisasimpleexampletakenfromtheexistingCollectionstutorial:这里有一个摘自现成的集合指南的简单例子。//Removes4-letterwordsfromc.Elementsmustbestringsstaticvoidexpurgate(Collectionc){for(Iteratori=c.iterator();i.hasNext();)if(((String)i.next()).length()==4)i.remove();}Hereisthesameexamplemodifiedtousegenerics:这里有个同样的例子,是使用集合定义的://Removesthe4-letterwordsfromcstaticvoidexpurgate(CollectionStringc){for(IteratorStringi=c.iterator();i.hasNext();)if(i.next().length()==4)i.remove();}WhenyouseethecodeType,readitas“ofType”;thedeclarationabovereadsas“CollectionofStringc.”Thecodeusinggenericsisclearerandsafer.Wehaveeliminatedanunsafecastandanumberofextraparentheses.Moreimportantly,wehavemovedpartofthespecificationofthemethodfromacommenttoitssignature,sothecompilercanverifyatcompiletimethatthetypeconstraintsarenotviolatedatruntime.Becausetheprogramcompileswithoutwarnings,wecanstatewithcertaintythatitwillnotthrowaClassCastExceptionatruntime.Theneteffectofusinggenerics,especiallyinlarg
本文标题:一份java笔试题
链接地址:https://www.777doc.com/doc-2823812 .html