4) {
5) Bird b = new Bird(); 6) b.Fly(3); 7) } 8) }
9) class Bird 10) {
11) static int Type = 2;
12) private void Fly(int an_Type) 13) {
14) Type = an_Type;
15) System.out.println(\16) } 17) }
上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?
8、阅读下面的程序: 1) abstract class Base{
2) abstract public void myfunc(); 3) public void another(){
4) System.out.println(\5) } 6) }
7) public class Abs extends Base{
8) public static void main(String argv[]){ 9) Base b = new Abs(); 10) b.another(); 11) }
12) public void myfunc(){
13) System.out.println(\14) }
15) public void another(){ 16) myfunc(); 17) } 18) }
以上程序经编译后,运行结果是什么?
9、阅读下面的程序: 1) class Super{ 2) public int i=0; 3) public Super(){ 4) i=1; 5) }
6) }
7) public class Sub extends Super{ 8) public Sub(){ 9) i=2; 10) }
11) public static void main(String args[]){ 12) Sub s=new Sub();
13) System.out.println(s.i); 14) } 15) }
上面的程序经编译后,运行结果是什么?
10、阅读下面的程序,程序保存为Test.java: 1) public class Test {
2) public static void main(String[ ] args) { 3) int index=0;
4) while (index<=100) { 5) index+=10; 6) if (index==40) 7) break;
8) System.out.println(\9) } 10) } 11) }
上面的程序经编译,运行后输出的结果是什么?
五、问答题
1、 设int类型变量x和y分别初始化为3和100,下列语句的循环体共执行几次?执行完下列语句后x和y的值分别是多少? (1) while(x<=y) x=2*x;
(2) while(y/x>5) if(y-x>25) x=x+1; else y=y/x; (3) do{x=2*x;} while(x (4) do{x=y/x;y=y-x;}while(x>=y); (5) do{y=y/x-1; if(y>=x) y=x;} while(y>=1); 2、简述对象、类的概念。 3、简述封装、继承性和多态性的概念。 4、根据以下的设计要求编写java源代码。 类名: Circle 实例数据(均为private): radius(double) //圆的半径 方法: 构造方法(没有参数,设置radius的值为10.0) setRadius(有一个double参数,将radius的值设为这个新值), getRadius (没有参数,返回radius的值) sameSize(有一个参数,是另一个Circle对象的引用,如果两个Circle对象的radius的差小于0.001,则返回true) 5、下面的代码使用上题的Circle类,请回答下面的问题: public class CircleTester { public static void main(String[] args) { Circle c1,c2,c3; c1 = new Circle(); c2 = new Circle(); System.out.println(“are same is: “+c1.sameSize(c2)); c2.setRadius(20.0); compare.reset(); System.out.println(“are same is: “+c1.sameSize(c2)); } } 问题: (1) 共创建了几个Circle对象? (2) 程序运行的结果是什么? 6、假设已有一个ArrayMethods 类,包含以下的方法: public static void replace(double[] a, int p, double v) 将数组a中下标为p的元素的值替换为v. public static void fill(double[] a, int p, double v) 将数组a中的前p个元素用value值填充(即将数组a的前p个元素的值,设成v),如果数组的长度小于p,则全部元素都设成v public static void display(double[] a) 在屏幕上显示数组a的内容 现在假设你在main()方法中已经声明了如下变量: double[] array1={4.5, 6.0, 0.1, 2.2}; double[] array2; double num1; int pos=3; 要求对下面的3组语句,先回答是否合法(即没有编译错误),如果是合法的,请描述程序运行的效果,如果不合法,请说明理由. 1) num1 = array1[2]; ArrayMethods.replace(array1, pos, num1); ArrayMethods.display(array1); 2) num1 = array1[0]; ArrayMethods.fill(array1, pos, num1); ArrayMethods.display(array1); 3) num1 = array1[1]; array2=new double[num1]; ArrayMethods.display(array2); 六、编程题 1、分别利用for、while、do~while编写计算正整数n1到n2的累加和。 2、编写一个编程,给定一个t的值(t的值也可通过命令行输入),按下式计算y值并输出,要求分别写作if语句和switch语句。 t2-1 0≤t<1 t3-2?t-2 1≤t<3 y= t2-t?sint 3≤t<5 t+1 5≤t<7 t-1 其它 3、设计一个类TestArraySum,定义一个含有10个元素的int类型数组a,10个数组元素的值是11~20,再定义一个方法arraySum(int[] a),返回数组所有元素的和,最后用main方法实现在屏幕上输出数组a所有元素的和。 4、编写一个java程序Suansu.java,定义两个整型变量a和b,使用构造函数初始化a为10,b为5,并定义求出a与b的和(方法名为AddAB)、差(方法名为SubAB)、积(方法名为MultiAB)、商 (方法名为DivAB)的方法。 用另一个java程序TestSuansu.java测试Suansu.java定义的方法,并在屏幕上输出结果。 5、创建一个名为Rectangle的类来表示一个使用宽度和高度来改变量的矩形,矩形的宽度和高度由构造方法来确定。为Rectangle类创建下列方法: ? getArea返回矩形的面积,要求长和高的范围为0~50; ? getPerimeter返回矩形的周长; ? Draw使用星号(*)作为描绘字符画出该矩形(假设宽度和高度为整数); 在另一个类TestRectangle中编写main方法来测试Rectangle类。 6、用面向对象的思想定义一个接口Area,其中包含一个计算面积的方法CalsulateArea(),然后设计MyCircle和MyRectangle两个类都实现这个接口中的方法CalsulateArea(),分别计算圆和矩形的面积,最后写出测试以上类和方法的程序。 7、创建一个Frame,有两个Button按钮和一个TextField,点击按钮,在TextField上显示Button信息。 8、创建下图的GUI程序(注意:不需要提供任何功能)。 9、编写一个文件拷贝的程序,将文件C:\\test1.txt的内容拷贝到C:\\test2.txt中。 10、编写一个程序,统计给定文件中每个字母出现的频率。 11、编写一个程序,统计给定文件中包含的单词数目,并按单词表的顺序显示统计结果。 12、用图形界面设计一个简单的计算器。 13、用图形界面实现简单的银行柜台业务,包含创建新帐户、取款、存款、查询帐户余额等业务。