您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 西南大学《面向对象程序设计》作业-60-试题与答案2017年最新
27、问:阅读下面的Java代码,写出打印语句(1)、(2)、(3)的输出结果,并解释原因。Stringstr1=newString(wangke);Stringstr2=newString(wangke);System.out.println(str1==str2);//(1)System.out.println(str1.equals(str2));//(2)System.out.println(str1.hashCode()==str2.hashCode());//(3)答:(1)false。因为==比较的是对象句柄,而对象str1,str2是完全独立的两个对象,它们的句柄是不同的。(2)true。因为String类的equals()源码实现中重写了Object中的equals()方法:只要两个String对象的字符数组内容相同,就认为两个对象相等。(3)true。因为String类的hashCode()源码实现中重写了Object类中的hashCode()方法:只要String的字符数组内容相同,hashCode就相同。28、问:阅读下面的JavaGUIApplication。在点击“测试”按钮后,控制台的输出信息是什么?importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassTest{publicstaticvoidmain(String[]args){newMyFrame().launchFrame();}}classMyFrameextendsJFrame{JButtonbtn=newJButton(测试);Containerctp=getContentPane();publicvoidlaunchFrame(){setBounds(200,200,250,160);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ctp.setLayout(newBorderLayout(10,10));ctp.add(North,btn);btn.addActionListener(newMyActionListener());//btn注册监听器1btn.addActionListener(newYourActionListener());//btn注册监听器2setVisible(true);}classMyActionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(e.getSource()==btn){System.out.println(inMyActionListener);}}}classYourActionListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(e.getSource()==btn){System.out.println(inYourActionListener);}}}}答:控制台输出:inYourActionListenerinMyActionListener因为点击事件首先被后注册的监听器newYourActionListener()处理,然后再被先注册的newMyActionListener()处理。29、问:数组有没有length()这个方法?String有没有length()这个方法?答:数组没有length()方法,但有length属性。String有length()方法。30、问:&与&&的区别是什么?参考答案:答:&是位运算符;&&是布尔逻辑运算符。31、问:有一个程序IO.java,代码如下。发现输入1之后,还没等到输入宽,程序就直接输出了637。为什么?importjava.io.*;classIO{publicstaticvoidmain(Stringargs[])throwsIOException{System.out.println(计算矩形面积);System.out.print(请输入长:);inta,b;a=System.in.read();System.out.print(请输入宽:);b=System.in.read();System.out.println(计算矩形面积是:+a*b);}}运行:C:\tempjavaIO计算矩形面积请输入长:1请输入宽:计算矩形面积是:637答:因为System.in.read()接收的是字节0-255。当输入字符1以后,其实返回的是ASCII码,也就是49。然后你又按了个回车,回车的ASCII码是13。所以,结果相当于a=49b=1349*13=63732、问:下面的Java程序,打印结果是什么?publicclassTest{publicstaticvoidchangeStr(Stringstr){str=welcome;}publicstaticvoidmain(String[]args){Stringstr=1234;changeStr(str);System.out.println(str);}}答:123434、问:下面的代码是否能输出wangke?try{System.exit(0);}finally{System.out.println(wangke);}答:不会输出wangke。在try-catch-finally结构中,如果执行到try代码段或catch代码段中的return语句,则先运行finally代码段,再运行return语句;如果执行到try代码段或catch代码段中的System.exit(0)语句,则直接退出程序,即这时finally代码段不会被执行到。34、问:下面的代码是否能输出wangke?try{System.exit(0);}finally{System.out.println(wangke);}答:不会输出wangke。在try-catch-finally结构中,如果执行到try代码段或catch代码段中的return语句,则先运行finally代码段,再运行return语句;如果执行到try代码段或catch代码段中的System.exit(0)语句,则直接退出程序,即这时finally代码段不会被执行到。35、问:Strings=newString(xyz);创建了几个StringObject?答:两个对象。一个是“xyx”,一个是指向“xyx”的引用对象s。36、问:下面的Test.java程序,有哪两处错误?ClassTest{voidf(){publicinti;}}答:错误1:Class应改为class错误2:publicinti;应改为inti;//局部变量不能用权限修饰符、static修饰37、问:intcount=10;count+=++count;System.out.println(count);能否通过编译?打印输出是多少?答:可以通过编译。打印输出21。intcount=10;count+=++count;//相当于count=count+(++count);System.out.println(count);//输出2138、问:下面的Test.java程序,输出结果是derive吗?classbase{privatevoidprint(){//注意:private修饰System.out.println(base);}publicvoiddoprint(){print();}}classderiveextendsbase{privatevoidprint(){//注意:private修饰System.out.println(derive);}}classTest{publicstaticvoidmain(String[]args){baseb=newderive();b.doprint();}}答:不是。输出结果是base。39、阅读下面的程序,写出程序运行的输出结果。publicclassTest2{publicstaticcharmethod(charch){if((ch='A')&&(ch='Z'))return(char)(ch+32);elsereturnch;}publicstaticvoidmain(String[]args){Strings=0123456789ABCDEF,s1=;for(inti=s.length()-1;i=0;i--)s1=s1+method(s.charAt(i));System.out.println(s1);}}答:程序运行的输出结果是:fedcba987654321040、阅读下面程序,并回答问题。(1)try块中包含的哪些语句或表达式可能抛出异常?(2)流DataOutputStream和DataInputStream常被用于何种操作?(3)假定文件out.txt中原本没有任何数据,这段程序执行完成后,文件out.txt的内容是什么?程序在控制台窗口输出什么?importjava.io.*;publicclassTest4{publicstaticvoidmain(Stringargs[]){try{DataOutputStreamdout=newDataOutputStream(newFileOutputStream(out.txt));for(inti=0;i10;i++)dout.writeInt(0+i);dout.close();DataInputStreamdin=newDataInputStream(newFileInputStream(out.txt));for(inti=0;i10;i++)System.out.print(din.readInt()-0+,);din.close();}catch(IOExceptione){System.err.println(发生异常:+e);e.printStackTrace();}}}答:问题(1):newFileOutputStream(“out.txt”)dout.writeInt(‘0’+i);dout.close();newFileInputStream(“out.txt”)din.readInt()din.close();问题(2):常被用于读取与存储(读写或输入/输出)基本数据类型的数据。问题(3):文件out.txt的内容是:0123456789程序在控制台窗口输出:0,1,2,3,4,5,6,7,8,9,41、JavaAWT程序设计:在窗口中画出三个TextField(前两个用于接收用户输入的两个整数,第三个用于显示相加和),一个加号Label,一个等于号Button.当按下Button时,将相加之和放到第三个TextField中。注意:不允许使用内部类。答:importjava.awt.*;importjava.awt.event.*;publicclassTFMath{publicstaticvoidmain(String[]args){newTFFrame().launchFrame();}}classTFFrameextendsFrame{TextFieldnum1,num2,num3;publicvoidlaunchFrame(){num1=newTextField(10);num2=newTextField(10);num3=newTextField(15);LabellblPlus=newLabel(+);ButtonbtnEqual=newButton(=);btnEqual.addActionListener(newMyMonitor(this));setLayout(newFlowLayout());add(nu
本文标题:西南大学《面向对象程序设计》作业-60-试题与答案2017年最新
链接地址:https://www.777doc.com/doc-7289096 .html