西南大学秋面向对象程序设计作业及答案.docx
《西南大学秋面向对象程序设计作业及答案.docx》由会员分享,可在线阅读,更多相关《西南大学秋面向对象程序设计作业及答案.docx(50页珍藏版)》请在冰豆网上搜索。
![西南大学秋面向对象程序设计作业及答案.docx](https://file1.bdocx.com/fileroot1/2023-2/2/447a59b3-ce48-4ffe-bdbb-61f4e2f47369/447a59b3-ce48-4ffe-bdbb-61f4e2f473691.gif)
西南大学秋面向对象程序设计作业及答案
面向对象程序设计
1、阅读下面的程序:
该程序运行的输出结果是:
()
A.eace
B.PEACE
C.ecaep
D.ECAEP
本题参考答案:
C
2、阅读下面的程序:
该程序运行的输出结果是:
()
A.0123456789ABCDEF
B.ABCDEF0123456789
C.0123456789abcdef
D.fedcba9876543210
本题参考答案:
D
3、阅读下面的程序:
该程序运行的输出结果是:
()
A.12248
B.224832
C.1441664
D.12624120
本题参考答案:
D
4、阅读下面程序:
该程序运行的输出结果是:
()
A.sum=6
B.sum=32
C.sum=64
D.sum=12
本题参考答案:
B
5、从开始执行到执行结束,小应用程序经历的3个状态分别是:
()
A.初始态、就绪态,结束态
B.就绪态、运行态,停止态
C.初始态、运行态,停止态
D.就绪态、运行态,休眠态
本题参考答案:
C
6、下列关于Java小应用程序(Applet)的说法中,正确的是:
()
A.java.applet.Applet类是所有Java小应用程序的基类
B.Java小应用程序不需要编译
C.Java小应用程序也需要main()方法
D.Java小应用程序必须实现ActionListener接口
本题参考答案:
A
7、Swing的三个顶层容器分别是:
()
A.JApplet,JPanel,JWindow
B.JDialog,JApplet,JFrame
C.JApplet,JFrame
D.JMenu
E.JFrame,JPanel,JTextArea
本题参考答案:
B
8、把容器划分为东、西、南、北、中5个区域的布局管理器是:
()
A.BoxLayout
B.FlowLayout
C.ardLayout
D.BorderLayout
本题参考答案:
D
9、下列语句序列执行之后,b1,b2,b3,b4的值分别是:
()
Strings1="peace";
Strings2=newString(s1);
Strings3=s2;
Strings4=newString("PEACE");
booleanb1=(s1==s2);
booleanb2=s1.equals(s2);
booleanb3=(s3==s2);
booleanb4=s4.equals(s3);
A.true,true,false,false
B.false,true,true,true
C.false,true,true,false
D.false,true,false,false
本题参考答案:
C
10、下列构造String的语句中,不正确的是:
()
A.Stringstr2="";
B.Stringstr1=newString();
C.Stringstr4=""+123;
D.Stringstr3=newString(123);
本题参考答案:
D
11、下列关于构造方法的说法中,不正确的是:
()
A.构造方法用于创建类的实例
B.构造方法不可以重载
C.构造方法不具有返回值类型
D.构造方法名必须和类名相同
本题参考答案:
B
12、既能作为类的修饰符,也能作为类成员的修饰符的是()
A.public
B.extends
C.void
D.static
本题参考答案:
A
13、执行完下列语句后,变量x的值是()
intx=7,y=10;
switch(x/y){
case0:
x++;
case7:
x*=y;
case14:
x+=y;break;
default:
x%=y;
}
A.8
B.70
C.80
D.90
本题参考答案:
D
14、以下由for语句构成的循环的执行次数是:
()
for(inti=0;i<=0;i=i);
A.有语法错,不能执行
B.一次也不执行
C.执行1次
D.无限次
本题参考答案:
D
15、设有定义inti=7;charch="b";下面赋值语句中不正确是:
()
A.i=ch;
B.ch=i;
C.ch=(char)i;
D.i=(int)ch;
本题参考答案:
B
16、设有定义inti=80,j=7;doubled=80.7;则下列语句中正确的赋值语句是:
()
A.i+j=(int)d;
B.i=d;
C.i=(int)d+j;
D.j=(int)i-d;
本题参考答案:
C
17、以下关于Java语言的叙述错误的是:
()
A.Java是最纯粹的面向对象语言,对面向对象方法学的支持也最全面
B.Java是解释执行的语言,由Java解释器负责将Java源文件解释为机器码执行
C.Java是平台无关的,即Java程序不用修改就可以在不同类型的计算机平台上运行
D.Java提供了大量功能丰富的可重用类库,有效减少了编程的工作量
本题参考答案:
B
18、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序“一次编写,到处运行”的特点:
()
A.多线程
B.与平台无关
C.面向对象
D.分布式
本题参考答案:
B
19、下列选项中,用于声明实现一个接口关键字是:
()
A.interface
B.implements
C.import
D.abstract
本题参考答案:
B
20、下列不属于Java语言关键字的是()
A.repeat
B.try
C.break
D.new
本题参考答案:
A
21、下列字符序列中可以作为Java语言标识符的是()
A.true
B.123_xyz
C.x.y
D._x123
本题参考答案:
D
22、下列字符序列中不能作为Java语言标识符的是()
A.abc_123
B.圆周率PI
C.false
D._123abc
本题参考答案:
C
23、问:
阅读下面的Java代码,写出打印语句的输出结果(即类的初始化顺序)。
publicclassInitialOrderTest{
//静态变量
publicstaticStringstaticField="静态变量";
//变量
publicStringfield="变量";
//静态初始化块
static{
System.out.println(staticField);
System.out.println("静态初始化块");
}
//初始化块
{
System.out.println(field);
System.out.println("初始化块");
}
//构造器
publicInitialOrderTest(){
System.out.println("构造器");
}
publicstaticvoidmain(String[]args){
newInitialOrderTest();
}
}
本题参考答案:
答:
输出结果是:
静态变量
静态初始化块
变量
初始化块
构造器
24、问:
Math.round(11.5)返回多少?
Math.round(-11.5)返回多少?
本题参考答案:
答:
Math.round(11.5)返回12,Math.round(-11.5)返回-11。
25、问:
下面的Java程序,编译时会报什么错误?
importjava.io.*;
classSuperClass{
publicvoidfun()throwsIOException{
}
}
classSubClass1extendsSuperClass{
publicvoidfun()throwsException{
System.out.println("SubClass:
:
fun()");
}
}
classSubClass2extendsSuperClass{
publicvoidfun()throwsFileNotFoundException,ArithmeticException{
System.out.println("B6:
:
method()");
thrownewArithmeticException("被除数为0");
}
}
本题参考答案:
答:
错误之处:
SubClass1中的fun()无法覆盖SuperClass中的fun();被覆盖的方法不抛出java.lang.Exception
publicvoidfun()throwsException{
^
26、问:
下面的TestStaticMain.java程序能否通过编译?
哪条语句会报错?
publicclassTestStaticMain{
publicstaticvoidmain(String[]args){
Personp=newPerson(10,"wangke");
p.print();
}
classPerson{
privateintID;
privateStringname;
Person(intID,Stringname){
this.ID=ID;
this.name=name;
}
publicvoidprint(){
System.out.println("ID="+ID);
System.out.println("name="+name);
}
}
}
本题参考答案:
答:
不能通过编译。
Personp=newPerson(10,"wangke");这一句会报错:
无法从静态上下文中引用非静态变量this。
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注册监听器1
btn.addActionListener(newYourActionListener());//btn注册监听器2
setVisible(true);
}
classMyActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==btn){
System.out.println("inMyActionListener");
}
}
}
classYourActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==btn){
System.out.println("inYourActionListener");
}
}
}
}
本题参考答案:
答:
控制台输出:
inYourActionListener
inMyActionListener
因为点击事件首先被后注册的监听器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:
\temp>javaIO
计算矩形面积
请输入长:
1
请输入宽:
计算矩形面积是:
637
本题参考答案:
答:
因为System.in.read()接收的是字节0-255。
当输入字符1以后,其实返回的是ASCII码,也就是49。
然后你又按了个回车,回车的ASCII码是13。
所以,结果相当于
a=49
b=13
49*13=637
32、问:
下面的Java程序,打印结果是什么?
publicclassTest{
publicstaticvoidchangeStr(Stringstr){
str="welcome";
}
publicstaticvoidmain(String[]args){
Stringstr="1234";
changeStr(str);
System.out.println(str);
}
}
本题参考答案:
答:
1234
33、问:
下面的Java程序,编译时会报什么错误?
classSuperClass{
publicvoidfun(){
}
}
classSubClassextendsSuperClass{
privatevoidfun(){
System.out.println("SubClass:
:
fun()");
}
}
本题参考答案:
答:
错误之处:
SubClass中的fun()无法覆盖SuperClass中的fun();正在尝试指定更低的访问权限;为public
privatevoidfun(){
^
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);//输出21
38、问:
下面的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);
}
}
本题参考答案:
答:
程序运行的输出结果是:
fedcba9876543210
40、阅读下面程序,并回答问题。
(1)try块中包含的哪些语句或表达式可能抛出异常?
(2)流DataOutputStream和DataInputStream常被用于何种操作?
(3)假定文件out.txt中原本没有任何数据,这段程序执行完成后,文件out.txt的内容是什么?
程序在控制台窗口输出什么?
importjava.io.*;
publicclassTest4{
publicstaticvoidmain(Stringargs[]){
try{
DataOutputStreamdout=newDataOutputStream(
newFileOutputStream("out.txt"));
for(inti=0;i<10;i++)
dout.writeInt("0"+i);
dout.close();
DataInputStreamdin=newDataInputStream(
newFileInputStream("out.txt"));
for(inti=0;i<10;i++)
System.out.print(din.readInt()-"0"+",");
din.close();
}catch(IOExceptione){
System.err.println("发生异常:
"+e);
e.printStackTrace();
}
}
}
本题参考答案:
答:
问题
(1):
newFileOutputStream(“out.txt”)
dout.writeInt(‘0’+