考试教辅javajava分析题java分析.docx
《考试教辅javajava分析题java分析.docx》由会员分享,可在线阅读,更多相关《考试教辅javajava分析题java分析.docx(25页珍藏版)》请在冰点文库上搜索。
考试教辅javajava分析题java分析
JAVA分析题
1.写出下列程序输出结果:
publicclassSnakeimplementsCloneable{
privateSnakenext;
privatecharc;
Snake(inti,charx){
c=x;
if(--i>0)
next=newSnake(i,(char)(x+1));
}
voidincrement(){
c++;
if(next!
=null)
next.increment();
}
publicStringtoString(){
Strings=":
"+c;
if(next!
=null)
s+=next.toString();
returns;
}
publicObjectclone(){
Objecto=null;
try{
o=super.clone();
}catch(CloneNotSupportedExceptione){}
returno;
}
publicstaticvoidmain(String[]args){
Snakes=newSnake(5,'a');
System.out.println("s="+s);
Snakes2=(Snake)s.clone();
System.out.println("s2="+s2);
s.increment();
System.out.println("afters.increment");
System.out.println("s="+s);
System.out.println("s2="+s2);
}
}
结果:
s=:
a:
b:
c:
d:
e
s2=:
a:
b:
c:
d:
e
afters.increment
s=:
b:
c:
d:
e:
f
s2=:
a:
c:
d:
e:
f
2.写出main方法中的调用的执行顺序
publicA{
1publicinti=1;
2publicstaticintj=1;
3publicA(){};
}
BextendsA{
4publicinta=2;
5publicstaticintb=2;
6publicB(){};
}
publicclassTest(){
publicstaticvoidmain(String[]args){
inti=B.b;
Bb=newB();
}
}
程序执行的顺序:
251346
3.请列出objBtn_actionPerformed执行时的各语句执行顺序
voidobjBtn_actionPerformed(ActionEvente){
Childchild=newChild();
}
classBase{
1inti=0;
2OtherbaseOther=newOther(“initBaseOther”);
3privatestaticintx=1;
publicBase(){
4System.out.println(“InitBase”);
}
}
classChildextendsBase{
5inta=0;
6OtherchildOther=newOther(“initChildOther”);
7privatestaticinty=2;
publicChild(){
8System.out.println(“initChild”);
}
}
4.请列出Test执行时的输出结果
classA{
publicvoidprintValue(){
System.out.println(“A”);
}
}
classSextendsA{
publicvoidprintValue(){
System.out.println(“S”);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Ss=newS();
s.printValue();
Aas=(A)s;
As.printValue();
}
}
输出的结果是:
SS
5.试分析一下以下函数的编码中,存在的性能问题有哪些?
可以进行什么样的优化?
classA{
B[]bs=newB[20];
publicstringtoString(){
\StringBufferbuf=newStringBuffer(“xml”);
for(intI=0;I<20;I++)
buf.append(bs[i].toString());
buf.append(“OVER”);
returnbuf.toString();
}
}
classB{
Stringx=”ValueX”;
Stringy=”ValueY”;
publicStringtoString(){
StringBufferbuf=newStringBuffer();
buf.append(x);
buf.append(y);
returnbuf.toString();
}
}
6.下面的代码有什么性能问题?
前提:
T1位数据库表格,只有一个可以为null的字符串字段,长度为100;
Connectionconn已经获得连接;
ArrayListlistName有500个不同的字符串值,且每个字符串的长度不超过100;
Try{
PreparedStatementps=conn.PreparedStatement(“insertintoT1(name)value(?
)”);
For(intI=0;Ips.setString(1,(String)list.get(i));
ps.executeUpdate();
}
ps.close();
conn.close();
}catch(Exceptionex){}
答:
oracle服务器端耗费内存!
应该每循环20次mit()一下
7.A内基类B为子类,当Bb=newB();执行时的输出结果
classA{
inti=0;
publicstaticvoidgetInit(Strings){
System.out.println(s);
}
publicA(){
getInit("AInit");
}
}
classBextendsA{
inti=0;
publicstaticvoidgetInit(Strings){
System.out.println(s);
}
publicB(){
getInit("BInit");
}
}
输出的结果是:
AInitBInit
8.写出下面程序运行结果
classNoteX{
publicstaticfinalint
MIDDLE_C=0,C_SHARP=1,C_FLAT=2;
}
classInstrumentX{
publicvoidplay(intNoteX){
System.out.println("InstrumentX.play()");
}
}
classWindXextendsInstrumentX{
publicvoidplay(NoteXn){
System.out.println("WindX.play(NoteXn)");
}
}
classKettleXextendsInstrumentX{
publicvoidplay(intNoteX){
System.out.println("KettleX.play(NoteXn)");
}
}
publicclassWindMusic{
publicstaticvoidtune(InstrumentXi){
i.play(NoteX.MIDDLE_C);
}
publicstaticvoidmain(String[]args){
WindXflute=newWindX();
tune(flute);
KettleXkttle=newKettleX();
tune(kttle);
}
}
其结果:
WindX.play(NoteXn)
InstrumentX.play()
9.写出下面程序运行结果
classTags{
Tags(intmarker){
System.out.println("Tags("+marker+")");
}
}
classInsect{
Tagst1=newTags
(1);
inti=9;
intj;
Insect(){
prt("i="+i+",j="+j);
j=39;
}
staticintx1=prt("staticInsect.x1initialized");
Tagst2=newTags
(2);
staticintprt(Strings){
System.out.println(s);
return47;
}
}
publicclassBeetleextendsInsect{
Tagst3=newTags(3);
intk=prt("Beetle.kinitialized");
Beetle(){
prt("k="+k);
prt("j="+j);
}
staticintx2=prt("staticBeetle.x2initialized");
staticintprt(Strings){
System.out.println(s);
return63;
}
publicstaticvoidmain(String[]args){
prt("Beetleconstructor");
Beetleb=newBeetle();
}
}
其结果:
staticInsect.x1initialized
staticBeetle.x2initialized
Beetleconstructor
Tags
(1)
Tags
(2)
i=9,j=0
Tags(3)
Beetle.kinitialized
k=63
j=39
10.写出下面程序运行结果
publicclassArrayTest{
privateint[]str={1,2,3,4,5,6};
publicArrayTest(){
}
publicvoidincrease(int[]arrays){
for(inti=0;iarrays[i]++;
}
}
publicvoidprint(){
System.out.print("str=[");
for(inti=0;iif(i>0){
System.out.print(",");
}
System.out.print(str[i]);
}
System.out.println("]");
}
publicstaticvoidmain(String[]args){
ArrayTestobj=newArrayTest();
obj.print();
System.out.println("Afterincrease:
");
obj.increase(obj.str);
obj.print();
}
}
其结果:
str=[1,2,3,4,5,6]
Afterincrease:
str=[2,3,4,5,6,7]
11.写出下面程序的运行结果并分析程序的潜在缺陷
publicclassNullHandle{
privateStringstr;
publicNullHandle(){
}
publicStringgetStr(){
returnstr;
}
publicstaticvoidmain(String[]args){
NullHandleobj=newNullHandle();
StringnullStr=obj.getStr();
if(nullStr.length()==0){
System.out.println("empty!
");
}else{
System.out.println(nullStr);
}
}
}
答案:
第11行有空指针异常
if(nullStr.length()==0){
12.写出下面程序的运行结果并分析程序的潜在缺陷
publicclassSnakeimplementsCloneable{
privateSnakenext;
privatecharc;
Snake(inti,charx){
c=x;
if(--i>0)
next=newSnake(i,(char)(x+1));
}
voidincrement(){
c++;
if(next!
=null)
next.increment();
}
publicStringtoString(){
Strings=":
"+c;
if(next!
=null)
s+=next.toString();
returns;
}
publicObjectclone(){
Objecto=null;
try{
o=super.clone();
}catch(CloneNotSupportedExceptione){}
returno;
}
publicstaticvoidmain(String[]args){
Snakes=newSnake(5,'a');
System.out.println("s="+s);
Snakes2=(Snake)s.clone();
System.out.println("s2="+s2);
s.increment();
System.out.println("afters.increment");
System.out.println("s="+s);
System.out.println("s2="+s2);
}
}
答案:
clone方法中只定义了浅克龙,没有把原始对象(这里是一个链表)完全复制下来,s2的每个元素都是s的对应元素的引用(除了第一个)。
13.写出下列程序完成的功能
publicclassSum{
publicstaticvoidmain(Stringargs[]){
doublesum=0.0;
for(inti=1;i<=100;i++)
sum+=1.0/(double)i;
System.out.println("sum="+sum);
}
}
答案:
计算从1到100转化成double类型的倒数的和100
∑1.0/N
N=1
14.写出下列程序完成的功能
importjava.io.*;
publicclassReverse{
publicstaticvoidmain(Stringargs[]){
inti,n=10;
inta[]=newint[10];
for(i=0;itry{
BufferedReaderbr=newBufferedReader(
newInputStreamReader(System.in));
a[i]=Integer.parseInt(br.readLine());
}catch(IOExceptione){};
for(i=n-1;i>=0;i--)
System.out.print(a[i]+"");
System.out.println();
}
}
答案:
要求用户输入10个数字,然后按反序输出
15.写出下面程序运行结果
publicabstractclassABC{
longaver=0;
longmax=0;
longmin=0;
inttestSum=0;
protectedabstractactionPerformed();
publicvoidABC(inttestSum){
longstart;
longinterval;
longsum=0;
this.testSum=testSum;
for(inti=0;istart=(newjava.util.Date()).getTime();
actionPerformed();
interval=(newjava.util.Date()).getTime()-start;
sum+=interval;
if(interval>max)max=interval;
if(i==0)
min=interval;
elseif(intervalmin=interval;
}
aver=sum/testSum;
System.out.println("aver:
\t"+aver+"miliSeconds");
System.out.println("max:
\t"+max+"miliSeconds");
System.out.println("min:
\t"+min+"miliSeconds");
}
}
答案:
计算某个方法执行n次的最短时间、最长时间和平均时间
16.写出下面程序运行结果
importjava.io.*;
publicclassabc{
publicstaticvoidmain(Stringargs[]){
Stringstr1="Hello!
";
Stringstr2="IloveJAVA.";
System.out.println(newAB(str1,str2));
System.out.println(str2);
}
}
classAB{
Strings1;
Strings2;
AB(Stringstr1,Stringstr2){
s1=str1;
s2=str2;
str2+=str1;
}
publicStringtoString(){
returns1+s2;
}
}
答案:
Hello!
IloveJAVA.
IloveJAVA.
17.写出下面程序运行结果
classEx{
publicstaticvoidmain(String[]args){
Fxf=newFx(5);
}
Ex(){
System.out.println("Ex,no-args");
}
Ex(inti){
System.out.println("Ex,int");
}
}
classFxextendsEx{
Fx(){
super();
System.out.println("Fx,no-args");
}
Fx(inti){
this();
System.out.println("Fx,int");
}
}
答案:
Ex,no-args
Fx,no-args
Fx,int
18.给出以下程序的运行结果
#include
voidmain(){
intn=5,sum=1;
for(inti=1;i<=n;i++){
sum=sum*i;
}
printf(“outputsum:
%d”,sum);
}
输出结果是120。
19.