西南大学《面向对象程序设计》作业 60 试题与答案最新.docx
- 文档编号:7348106
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:31
- 大小:28.53KB
西南大学《面向对象程序设计》作业 60 试题与答案最新.docx
《西南大学《面向对象程序设计》作业 60 试题与答案最新.docx》由会员分享,可在线阅读,更多相关《西南大学《面向对象程序设计》作业 60 试题与答案最新.docx(31页珍藏版)》请在冰点文库上搜索。
西南大学《面向对象程序设计》作业60试题与答案最新
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
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代码段不会被执行到。
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’+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(num1);
add(lblPlus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
}
classMyMonitorimplementsActionListener{
TFFrametf=null;
publicMyMonitor(TFFrametf){
this.tf=tf;
}
publicvoidactionPerformed(ActionEvente){
intn1=Integer.parseInt(tf.num1.getText());
intn2=Integer.parseInt(tf.num2.getText());
tf.num3.setText(""+(n1+n2));
}
}
42、阅读下面的程序,写出输出结果。
publicclassMyException{
publicstaticvoidthrowException(){
System.out.println("产生并抛出ArithmeticException类型的异常");
thrownewArithmeticException();
}
publicstaticvoidcatchArrayException(){
try{
throwException();
System.out.println("在try语句块中的多余语句");
} catch(ArrayIndexOutOfBoundsExceptione){
System.err.println("方法catchArrayException捕捉到异常");
}finally{
System.out.println("方法catchArrayException的finally语句块");
}
System.out.println("方法catchArrayException运行结束");
}
publicstaticvoidmain(String[]args){
try{
catchArrayException();
}catch(ArithmeticExceptione){
System.err.println("方法main捕捉到异常");
}finally{
System.out.println("方法main的finally语句块");
}
System.out.println("异常处理结束");
}
}
答:
输出为
产生并抛出ArithmeticException类型的异常
方法catchArrayException的finally语句块
方法main捕捉到异常
方法main的finally语句块
异常处理结束
44、阅读下面的程序,写出输出结果。
classParent{
//静态变量
publicstaticStringp_StaticField="父类--静态变量";
//变量
publicStringp_Field="父类--变量";
//静态初始化块
static{
System.out.println(p_StaticField);
System.out.println("父类--静态初始化块");
}
//初始化块
{
System.out.println(p_Field);
System.out.println("父类--初始化块");
}
//构造器
publicParent(){
System.out.println("父类--构造器");
}
}
publicclassSubClassextendsParent{
//静态变量
publicstaticStrings_StaticField="子类--静态变量";
//变量
publicStrings_Field="子类--变量";
//静态初始化块
static{
System.out.println(s_StaticField);
System.out.println("子类--静态初始化块");
}
//初始化块
{
System.out.println(s_Field);
System.out.println("子类--初始化块");
}
//构造器
publicSubClass(){
System.out.println("子类--构造器");
}
//程序入口
publicstaticvoidmain(String[]args){
newSubClass();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 西南大学面向对象程序设计作业 60 试题与答案最新 西南 大学 面向 对象 程序设计 作业 试题 答案 最新