}
}
24、写出以下程序的功能。5 4 3 2 1 public class TestArray
{ public static void main(String args[ ]){ int i , j ;
int a[ ] = {1,3,2,5,4}; for ( i = 0 ; i < a.length-1; i ++ ) { int k = i; for ( j = i ; j < a.length ; j++ ) if ( a[j]>a[k] ) k = j; int temp =a[i]; a[i] = a[k]; a[k] = temp; } for ( i =0 ; i 25、下面是一个排序的程序: import java.io.*; public class Test56_Sort { public static void main(String args[ ]) { int[] a={42,99,5,63,95,36,2,69,200,96}; System.out.println(排序前的数据序列:); ShowArray(a); Sort(a); System.out.println(排序后的数据序列:); ShowArray(a); } public static void Sort(int[] x) { int w; for(int i=1; i for(int j=0; j { w=x[j]; x[j]=x[j+1]; x[j+1]=w; } /* if(i==1||i==2) ShowArray(x); if(i==2) break; */ } } public static void ShowArray(int b[]) { for(int i=0; i 排序前的数据序列: 42 99 5 63 95 36 2 69 200 96 排序后的数据序列: 2 5 36 42 63 69 95 96 99 200 问题: 如果将方法Sort( )中的一对注释符(/* */)去掉,程序输出的结果是什么? 26、请写下程序的输出结果: public class Test52 { String str1=Hello, Java world! \\t; String str2=Hello, students! ; public static void main(String args[]) { System.out.print(str1); System.out.println(str2); } } 输出结果:Hello, Java world! Hello, students! 27、请写下程序的输出结果: public class T2_4 { public static void main(String[] args) { int i,j; char c='*'; for(i=0;i<5;i++) { for(j=0;j<=i;j++) System.out.print(\ System.out.println(); } } } 输出结果: * * * * * * * * * * * * * * * 28、请写下程序的输出结果: x>y==false z>w==true public class ex2_2 { public static void main (String args[ ] ) { int x , y ; byte b = 6; float z = 1.234f ; double w = 1.23; boolean flag; x = 12 ; y = 300; flag=x>y; System.out.println(\ flag=z>w; System.out.println(\ } } 五、 编程题 1、编写一个完整的Java Application 程序。包含接口ShapeArea,MyRectangle类及Test类,具体要求如下: ⑴接口ShapeArea: double getArea():求一个形状的面积 double getPerimeter ():求一个形状的周长 ⑵类 MyRectangle: 实现ShapeArea接口,另有以下属性和方法: ① 属性 width: double类型,表示矩形的长 height: double类型,表示矩形的高 ② 方法 MyRectangle(double w, double h):构造函数 toString()方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0, area=2.0” ⑶Test类作为主类要完成测试功能 ① 生成MyRectangle对象 ② 调用对象的toString方法,输出对象的描述信息 2、编写一个完整的Java Application 程序,包括ShapeArea接口、MyTriangle类、Test类,具体要求如下: ⑴接口ShapeArea: double getArea():求一个形状的面积 double getPerimeter ():求一个形状的周长 ⑵类MyTriangle: 实现ShapeArea接口,另有以下属性和方法: ① 属性 x,y,z: double型,表示三角形的三条边 s: 周长的1/2(注:求三角形面积公式为s(s?x)(s?y)(s?z),s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法) ② 方法 MyTriangle(double x, double y, double z):构造函数,给三条边和s赋初值。 toString():输出矩形的描述信息,如“three sides:3.0,4.0,5.0,perimeter=12.0,area=6.0” ⑶Test类作为主类要完成测试功能 ② 生成MyTriangle对象 ② 调用对象的toString方法,输出对象的描述信息 五、问答题: 1、Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是public.一个类可以实现多个接口。 2、垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 3、谈谈final, finally, finalize的区别。 final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize-方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他

