1、Java2实用教程(第三版)课后习题参考答案第1章 Java入门1. 开发与运行Java程序需要经过哪些主要步骤和过程?答:(1)编写Java源文件:使用文本编辑器(Edit或记事本),拓展名为.java(2)编译Java源文件:使用Java编译器(javac.exe)。得到字节码文件*.class(3)运行Java程序:Java应用程序使用Java解释器(java.exe)执行字节码文件;Java小应用程序使用支持Java标准的浏览器来执行。2. 怎样区分应用程序和小应用程序?应用程序的主类或小应用程序的主类必须用public修饰吗?答: 应用程序必须有main方法,这个方法是程序执行的入口
2、。小应用程序没有main方法。应用程序的主类不一定用public修饰;小应用程序的主类必须用public修饰。3. Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎样的?答: Java程序由类组成。应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为.java;有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,拓展名为.java。小应用程序:源文件名与主类的
3、类名相同,拓展名是.java。4. 在运行小程序的HTML文件中可以使用codebase属性指定小程序的字节码所驻留的目录。如果不使用codebase属性,小程序的字节码文件必须和运行它的HTML文件在同一目录中。编写一个小程序并将小程序的字节码存放在某个目录中,比如C:5000;把运行该小程序的HTML文件(注意其中的codebase属性):存放在另一个目录中。答: 以书中小应用程序为例进行说明:编写Java小应用程序源代码import java.applet.*;import java.awt.*;public class Boy extends Appletpublic void pai
4、nt(Graphics g)g.setColor(Color.red);g.drawString(“我一边喝着咖啡,一边学Java呢“,5,30);g.setColor(Color.blue);g.drawString(“我学得很认真“,10,50);将上述代码命名为Boy.java并进行编译得到Boy.class字节码文件;将得到的字节码文件存放在C:5000文件夹下;编写小应用程序的HTML源文件:将上述编写好的代码命名为Boy.html;并将此文件存放在C:5000文件夹以外的任意一个文件夹中(如C:1000);运行Boy.html。第2章 标识符、关键字和数据类型1. 什么叫标识符?标
5、识符的规则是什么?答:用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列。由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符,而且关键字不能作为标识符。2. 什么叫关键字?请说出5个关键字。答:Java语言中已经被赋予特定意义的一些单词。class break public return static extends等。3. Java的基本数据类型都是什么?答:boolean(逻辑型) char(字符型) float、double(浮点型) byte、short、int、long(整型)。4. 下列哪些语句是错误的:int x = 8;byte b = 127;b
6、 = x;答:b=x语句错误;原因是高级别的变量赋值给低级别的变量时,一定要用显式转换即b=(byte)x; 。5. 下列程序的输出结果是什么?public class Epublic static void main(String args)long a=1,2,3,4;long b=100,200,300,400,500;b=a;System.out.println(“数组b的长度:“+b.length);System.out.println(“b0=“+b0);答: 数组b的长度:4b0=16. 上机运行下列程序,注意观察输出结果。public class Epublic static
7、void main(String args)for(int i=20302;iA)y=爱;z=情;elsey=我;z=她;System.out.println(“ “+x+y+z);答: 你爱她2. 下列程序的输出结果是什么?public class E3public static void main(String args)char c=0;for(int i=1;i1000)MyException exception=new MyException(m);throw exception;elseSystem.out.println(m);public class Testpublic st
8、atic void main(String agrs)int m;Student stu1=new Student();m=987;trystu1.speak(m);m=1234;stu1.speak(m);catch(MyException e)e.showStr1();18.编写一个类,该类有一个方法public int f(int a,int b),该方法返回a和b的最大公约数。然后再编写一个该类的子类,要求子类重写方法f,而且重写的方法将返回a和b的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。要求在应用程序的主类中分
9、别使用父类和子类创建对象,并分别调用方法f计算两个正整数的最大公约数和最小公倍数。答: class Apublic int f(int a,int b)if(a0)String str1=text1.getText()+“n“+text2.getText()+“n“+text3.getText()+“n“;String str2=textarea.getText();textarea.setText(str2+str1);elsetext2.setText(“输入了非法格式的E-mail地址“);public class Testpublic static void main(String a
10、rgs)new WindowBox();8. 写一个应用程序,要求编写一个Panel的子类MyPanel,MyPanel中有一个文本框和一个按钮,要求MyPanel的实例作为其按钮的ActionEvent事件的监视器,当单击按钮时,程序获取文本框中的文本,并将该文本作为按钮的名称。然后在编写一个Frame的子类,即窗口。窗口的布局为BorderLayout布局。窗口中添加两个MyPanel面板,分别添加到窗口的东部区域和西部区域。答: import java.awt.*;import java.awt.event.*;class MyPanel extends Panel implements
11、 ActionListenerString name;TextField text;Button button;MyPanel()text=new TextField(10);button=new Button(“确定“);add(text);add(button);button.addActionListener(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););public void actionPerformed(ActionEvent e
12、)if(e.getSource()=button)name=text.getText();button.setLabel(name);class MyFrame extends FrameMyPanel panel1,panel2;MyFrame()panel1=new MyPanel();panel2=new MyPanel();add(panel1,BorderLayout.EAST);add(panel2,BorderLayout.WEST);setBounds(100,100,400,100);setVisible(true);validate();public class Testp
13、ublic static void main(String args)MyFrame win=new MyFrame();9. 参照例子7.18编写一个应用程序,要求有一个画布,在画布上绘制一个矩形,用户通过文本框输入矩形的宽和高以及矩形左上角的位置坐标。答: import java.awt.*;import java.awt.event.*;class Mycanvas extends Canvasint x,y,w,h;Mycanvas()setBackground(Color.cyan);public void setX(int x)this.x=x;public void setY(i
14、nt y)this.y=y;public void setW(int w)this.w=w;public void setH(int h)this.h=h;public void paint(Graphics g)g.drawRect(x,y,w,h);class WindowCanvas extends Frame implements ActionListenerMycanvas canvas;TextField text1,text2,text3,text4;Button button;WindowCanvas()canvas=new Mycanvas();text1=new TextF
15、ield(4);text2=new TextField(4);text3=new TextField(5);text4=new TextField(5);Panel pNorth=new Panel(),pSouth=new Panel();button=new Button(“确定“);button.addActionListener(this);pNorth.add(new Label(“矩形的宽: “);pNorth.add(text3);pNorth.add(new Label(“矩形的高: “);pNorth.add(text4);pSouth.add(new Label(“左上角位置坐标:“);pSouth.add(text1);pSouth.add(text2);pSouth.add(button);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););add(canvas,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setBounds(100,100,500,500);setVisible(true);