欢迎来到天天文库
浏览记录
ID:39584773
大小:83.00 KB
页数:8页
时间:2019-07-06
《华为的部分面试题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、QUESTIONNO:1publicclass Test1{ publicstaticvoid changeStr(Stringstr){ str="welcome"; } Publicstaticvoid main(String[]args){ Stringstr="1234"; changeStr(str); System.out.println(str); }}//输出结果:1234//这里虽然是一个静态方法,但是里面的变量是一个局部变量,//所以
2、这里不因为是静态方法,就误认为里面的变量也是静态变量了 第一题的解释不对!和是否静态变量无关,而是因为java的参数传递是值传递,相当于传给函数的是变量str的值的引用,而不是变量本身的引用,比如,str="1234",相当于str分配在内存地址a,而a中写着为字符串"1234"分配的地址b,传递时,分配了另一个内存地址c,c中复制了a的值,即地址b,把c传递给方法调用,c也指向的是"1234",但在方法中为str重新赋值对象时,相当于把c中的值改成了另一个地址d,d是新对象所在地址,但str的原始地址a中的值没有改变,仍然指
3、向b,内容为"1234 QUESTIONNO:2publicclass Test2{ staticboolean foo(char c){ System.out.print(c); Returntrue; } Publicstaticvoid main(String[]argv){ int i=0; //for(65;88&&(i<2);67) for (foo('A'); foo('B')&&(i<2); foo('C')){ i++
4、; foo('D'); } }}/*Whatistheresult?A.ABDCBDCBB.ABCDABCDC.Compilationfails.D.Anexceptionisthrownatruntime.//输出结果是:ABDCBDCB分析:FOR循环里面讲究的条件要为真,与你的判断式是什么没有关系就像这里,虽然是打印的字母,但是却不是false,所以可以执行第一次进行循环:foo('A')打印字母A,(注:这里不是false条件就默认为true条件)foo('B')打印字母B,i=0,比
5、较(i<2),条件为true,进行循环体,foo('D')打印Dfoo('C')打印字母C第二次循环:foo('B')打印B,i=1,比较(i<2)为true,进行循环体,foo('D')打印Dfoo('C')打印字母C第三次循环:foo('B')打印字母B,i=2,比较(i<2)为false,退出循环,得结果*/ QUESTIONNO:3 1.classA{2.protectedintmethod1(inta,intb){return0;}3.}Whichtwoarevalidinaclassthatextendsclass
6、A?(Choosetwo)A.publicintmethod1(inta,intb){return0;}B.privateintmethod1(inta,intb){return0;}C.privateintmethod1(inta,longb){return0;}D.publicshortmethod1(inta,intb){return0;}E.staticprotectedintmethod1(inta,intb){return0;}publicclass B extends A{ /** *@paramar
7、gs */ //cannotreducethevisibilityoftheinheritedmethodfromA //即不能够使从类A中继续来的方法的可见性降低 //privateintmethod1(inta,intb){return0;} //ThisstaticmethodcannothidetheinstancemethodfromA //静态方法不能够隐藏继承于A的实例 //staticprotectedintmethod1(inta,intb){retu
8、rn0;} //返回类型与A中的该方法不一致 //publicshortmethod1(inta,intb){return0;} /** *总结:类的继承中,如果要想重载父类的方法,必须要和父类中的返回类型、可见性等等都要操作一致 *
此文档下载收益归作者所有