习题

3.1 选择题

(1)程序TestSketch.java的代码如下,4个选项中正确的描述是( )。

     class A{
     }
     class B extends A{
     }
     public class TestSketch{
       public static void main(String args[]){
         A a=new A();
         B B=(B)a;
       }
     }

A. 通过编译并正常运行

B. 编译时出现异常

C. 编译通过,运行时出现异常

D. 编译器报告找不到TestSketch.java

(2)下面有关类Demo的描述正确的有( )。

     public class Demo extends Base{
       private int count;
       public Demo(){
         System.out.println("A Demo object has been created");
       }
       protected void addOne(){
         count++;
       }
     }

A. 当创建一个Demo类的实例对象时,count的值为0

B. 当创建一个Demo类的实例对象时,count的值是不确定的

C. Base类型的对象中可以包含改变count值的方法

D. Demo的子类对象可以访问count

(3)阅读下面的程序,正确的选项为( )。

     class Person{
       String name;
       String nickName;
       public Person(String s,String t){
         name=s;
         nickName=t;
       }
       public String toString(){
         return name+" nickname="+nickName;
       }
     }
     public class Teacher extends Person{
       String rank;
       public Teacher(String s,String t,String r){
         super(s,t);
         rank=r;
       }
       public String toString(){
         return name+" nickname="+nickName+"  rank="+rank;
       }
       public static void main(String args[]){
         Person a= new Person("Tom","Tiger");
         Person b= new Teacher("Jack","Horse","Professor");
         Teacher c= new Teacher("Bobby","Elephant","Lecturer");
         System.out.println("a is "+a.toString());
         System.out.println("b is "+b.toString());
         System.out.println("c is "+c.toString());
       }
     }

A. 编译时会出现错误

B. 运行时会出现错误

C. 运行结果为:

         a is Tom nickname=Tiger
         b is Jack nickname=Horse  rank=Professor
         c is Bobby nickname=Elephant  rank=Lecturer

D. 运行结果为:

         a is Tom nickname=Tiger
         b is Jack nickname=Horse
         c is Bobby nickname=Elephant  rank=Lecturer

3.2 阅读程序ShapeTest.java,写出其运行结果。

     class Shape{
       public void draw(){
         System.out.println("draw Shape");
       }
     }
     class Circle extends Shape{
       public void draw(){
         System.out.println("draw Circle");
       }
     }
     class Rectangle extends Shape{
       public void draw(){
         System.out.println("draw Rectangle");
       }
     }
     public class ShapeTest{
       public static void main(String[] args){
         Shape []shapes=new Shape[3];
         shapes[0]=new Shape();
         shapes[1]=new Rectangle();
         shapes[2]=new Circle();
         for(int i=0;i<shapes.length;i++)
           shapes[i].draw();
       }
     }

3.3 定义一个自己的数学类MyMath。类中提供静态方法max,该方法接收3个同类型的参数(例如整型),返回其中的最大值。

3.4 下面程序的运行结果是什么?并请读者阅读附录A中关于参数传递的内容。

     public class Util{
       public static void swap(int a,int b){
         int temp=a;
         a=b;
         b=temp;
       }
       public static void swap(String a,String b){
         String temp=a;
         a=b;
         b=temp;
       }
       public static void swapArray(Object []a,int i,int j){
         if(i!=j){
           Object temp=a[i];
           a[i]=a[j];
           a[j]=temp;
         }
       }
       public static void main(String []args){
         int a=100;
         int b=200;
         System.out.println("---before swap---");
         System.out.println("a="+a+" b="+b);
         Util.swap(a,b);
         System.out.println("---after swap---");
         System.out.println("a="+a+" b="+b);
         String aStr="Hello";
         String bStr="World";
         System.out.println("---before swap---");
         System.out.println("aStr="+aStr+" bStr="+bStr);
         Util.swap(aStr,bStr);
         System.out.println("---after swap---");
         System.out.println("aStr="+aStr+" bStr="+bStr);
         String []strArray={"Hello","World"};
         System.out.println("---before swap---");
         System.out.println("strArray[0]="+strArray[0]+
             " strArray[1]="+strArray[1]);
         Util.swapArray(strArray,0,1);
         System.out.println("---after swap---");
         System.out.println("strArray[0]="+strArray[0]+
             " strArray[1]="+strArray[1]);
       }
     }