JAVA程序设计第四章

一. 填空题(共17题,70.6分)
1. (填空题)
面向对象语言的三个特性是_____,_____,_____。


(1) 封装

(2) 继承

(3) 多态


2. (填空题)
当类名由几个单词复合而成时,每个单词的首字母使用______。


(1) 大写


3. (填空题)
变量和方法的名字的首单词的首字母使用______,如果变量的名字由多个单词组成,从第2个单词开始的其它单词的首字母使用______。


(1) 小写

(2) 大写


4. (填空题)
类体内容中声明成员变量是为了体现对象的属性还是行为?回答_______


(1) 属性


5. (填空题)
类体内容中定义的非构造方法是为了体现对象的属性还是行为?回答______


(1) 行为


6. (填空题)
构造方法是在用类创建对象时调用,构造方法有类型吗?回答有或者没有_______


(1) 没有


7. (填空题)
方法的重载是一个类中可以有多个方法具有相同的名字,但这些方法的____必须不同,即或者是参数的______不同,或者是参数的类型不同。

(1) 参数

(2) 个数


8. (填空题)
构造方法可以重载吗?回答可以或者不可以_______.

(1) 可以


9. (填空题)


类中的实例方法可以操作类变量(static变量)吗?回答可以或者不可以_______.

类方法(static方法)可以操作实例变量吗?回答可以或者不可以_______.

(1) 可以

(2) 不可以


10. (填空题)
类中的实例方法可以用类名直接调用吗?回答可以或者不可以_______.

(1) 不可以


11. (填空题)
一个类通过使用new运算符可以创建多个不同的对象,不同的对象的_____变量将被分配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。

(1) 实例


12. (填空题)
this关键字代表调用当前方法的对象,this可以出现在类方法中吗?回答可以或者不可以_______.

(1) 不可以


13. (填空题)

下列E类中【代码1】~【代码3】的输出结果分别是______,______,______。

class Fish {

   int weight = 1;

}

class Lake {

   Fish fish;

   void setFish(Fish s){

       fish = s;

   }

   void foodFish(int m) {

      fish.weight=fish.weight+m;

   }

}

public class E {

   public static void main(String args[]) {

       Fish  redFish = new Fish();

       System.out.println(redFish.weight);  //【代码1】

       Lake lake = new Lake();

       lake.setFish(redFish);

       lake.foodFish(120);

       System.out.println(redFish.weight);  //【代码2】

       System.out.println(lake.fish.weight);  //【代码3】

    }

}


(1) 1

(2) 121

(3) 121

14. (填空题)

A类中System.out.println的输出结果是_____________。

class B {

  int x = 100,y = 200;

   public void setX(int x) {

      x = x;

   }

   public void setY(int y) {

      this.y = y;

   }

   public int getXYSum() {

      return x+y;

   }

}

public class A {

  public static void main(String args[]) {

 B b = new B();

      b.setX(-100);

      b.setY(-200);

         System.out.println("sum="+b.getXYSum());

   }

}


(1) sum=-100

15. (填空题)

A类中System.out.println的输出结果是_________。

class B {

  int n;

   static int sum=0;

   void setN(int n) {

     this.n=n;

   }

   int getSum() {

     for(int i=1;i<=n;i++)

        sum=sum+i;

      return sum;

   }

}

public class A {

public static void main(String args[]) {

      B b1=new B(),b2=new B();

      b1.setN(3);

      b2.setN(5);

      int s1=b1.getSum();

      int s2=b2.getSum();

         System.out.println(s1+s2);

   }

}


(1) 27

16. (填空题)

E类中【代码1】,【代码2】的输出结果分别是_______,_________。

class A {

   double f(int x,double y) {

      return x+y;

   }

   int f(int x,int y) {

      return x*y;

   }

}

public class E {

   public static void main(String args[]) {

      A a=new A();

      System.out.println(a.f(10,10)); //【代码1】

      System.out.println(a.f(10,10.0)); //【代码2】

  }

}


(1) 100

(2) 20.0

17. (填空题)

E类中【代码1】,【代码2】,【代码3】的输出结果分别是______,______,______。


public class E {

   public static void main(String args[]) {

         f(1,2);//【代码1】

         f(-1,-2,-3,-4); //【代码2】

         f(9,7,6) ;//【代码3】

   }

   public static void f(int ... x){    //x是可变参数的代表,代表若干个int型参数

        int sum=0;

        for(int i=0;i<x.length;i++) {  //x.length是x代表的参数的个数

              sum+=x[i];//x[i]是x代表的第i个参数(类似数组)

        }

      System.out.println(sum);

   }

}


(1) 3

(2) -10

(3) 22

2. (其它)求序列前 n 项和(2/1+3/2+5/3+8/5+...)。输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +… 的前 n 项之和,保留 2 位小数。该序列从第 2 项起,每一项的分子是前一项分子与分母的 和,分母是前一项的分子。试编写相应程序。


    package e;
    import java.util.Scanner;

    public class e {
       public static void main(String[] args){
           System.out.println("请输入一个正整数n:");
           Scanner a=new Scanner(System.in);
           int n=a.nextInt();
           int i=0,j=0;
           float sum=0,a1=1,a2=1,a3=0;
           
           for(i=0;i<n;i++) {
              a3=a1+a2;          
              a1=a2;
              a2=a3;
              sum+=a3/a1;
          }
           System.out.println("前n项和为:");
           System.out.println(String.format("%.2f", sum));
       }
    }

(1) 3

(2) -10

(3) 22

二. 单选题(共5题,21分)

18. (单选题)

下列哪个叙述是正确的?

  • A. Java应用程序由若干个类所构成,这些类必须在一个源文件中。<br>
  • B. Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。<br>
  • C. Java源文件必须含有主类。
  • D. Java源文件如果含有主类,主类必须是public类。<br>

B :Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。<br>;

19. (单选题)

 

下列哪个叙述是正确的?

  • A. 成员变量的名字不可以和局部变量的相同。<br>
  • B. 方法的参数的名字可以和方法中声明的局部变量的名字相同。
  • C. 成员变量没有默认值。
  • D. 局部变量没有默认值。

D :局部变量没有默认值。; 

20. (单选题)

对于下列Hello类,哪个叙述是正确的?

class Hello {

     Hello(int m){

     }

     int Hello() {

         return 20;

     }

     hello() {

     }

}

  • A. Hello类有2个构造方法。
  • B. Hello类的int Hello()方法是错误的方法。
  • C. Hello类没有构造方法。
  • D. Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。

D :Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。; 

21. (单选题)

对于下列Dog类,哪个叙述是错误的?

class Dog {

     Dog(int m){

     }

     Dog(double  m){

     }

     int Dog(int m){

        return 23;

     }

     void Dog(double m){

     }

}

  • A. Dog(int m)与Dog(double m)互为重载的构造方法。
  • B. int Dog(int m)与void Dog(double m)互为重载的非构造方法。
  • C. Dog类只有两个构造方法,而且没有无参数的构造方法。
  • D. Dog类有3个构造方法。

D :Dog类有3个构造方法。;

22. (单选题)

下列E类的类体中哪些【代码】是错误的。

class E {

  int x;               //【代码1】

  long y = x;          //【代码2】

  public void f(int n) {

     int m;          //【代码3】

     int t = n+m;     //【代码4】  

  }

}

  • A. 【代码1】
  • B. 【代码2】
  • C. 【代码3】
  • D. 【代码4】

 D :【代码4】;

三. 多选题(共2题,8.4分)

23. (多选题)下列哪些类声明是错误的?

  • A. class A
  • B.  public class A
  • C.  protected class A
  • D. private class A

 CD : protected class A; private class A; 

24. (多选题)

下列A类中【代码1】~【代码5】哪些是错误的?

class Tom {

private int x = 120;

  protected int y = 20;

  int z = 11;

  private void f() {

     x = 200;

     System.out.println(x); 

  }

  void g() {

     x = 200;

     System.out.println(x);

  }

}

public class A {

  public static void main(String args[]) {

       Tom tom = new Tom();

       tom.x = 22;   //【代码1】

       tom.y = 33;   //【代码2】

       tom.z = 55;   //【代码3】

       tom.f();     //【代码4】

       tom.g();     //【代码5】

   }

}

  • A. 【代码1】
  • B. 【代码2】
  • C. 【代码3】
  • D. 【代码4】
  • E. 【代码5】

AD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值