Java面向对象练习题
一、填空题
1.如果一个方法不返回任何值,则该方法的返回值类型为void2.访问修饰符有publicprotectedprivate
3.一般Java程序的类主体由两部分组成:一部分是成员属性,另一部分是成员方法。
4.使用class关键字来定义类,用interface关键字定义接口。
5.当一个类的修饰符为final时,说明该类不能被其他类继承。
6.类的访问权限有2种,分别是public和默认的。
7.用来声明类成员的关键字是static。
8.==是比较两个基本类型的值是否相等,equals()是比较两个对象是否相等。
9.instanceOf运算符是用来检测该对象是否为特定的类型。
10.Java的运算符中,优先级最高的符号是( )。
11int a = i < j ? 20 : 30 ; 当i<j为true时情况下,a的值为20
12int c = 2 | 3;  c的值为313.整数类型一般默认是int类型,是32位。
14break主要用在循环语句或者switch语句中,用来跳出整个语句块;         continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
15switch语句中的变量类型只能为byteshortintchar、String。
16.遍历数组有2种方法,分别是普通for循环和foreach循环。
17.数组中可以存放任意类型的数据。
18.Java中类可以看做创建对象的模板,成员属性代表数据模型,    成员方法代表行为模型。
19.一个类可以包含3种类型变量,分别是局部变量、成员变量和类变量。
20.实现多态的三个条件是继承、重写、向上转型。
二、选择题
1.方法内定义的变量( )。
A.一定在方法内所有位置可见     B.可能在方法的局部位置可见
C.在方法外可以使用             D.在方法外可见
2.方法的形参(  )。
A.可以没有  B.至少有一个
C.必须定义多个形参      D.只能是简单变量
3return语句( )。
A.不能用来返回对象      B.只可以返回数值
C.每个方法都含有       D.一个方法中可以有多个
4.main()方法的返回值类型是( )。
A.boolean   B.int
C.void      D.static
5.编译并运行下面的程序,运行结果是( )。
public class A{
   public static void main(String args[]){
      A a=new A();
      a.method(8);
   }
   void method(int i){
      System.out.println(“int:  ”+i);
   }
   void method(long i){
      System.out.println(“long:  ”+i);
   }
A.程序可以编译运行,输出结果为:“int:  8”      
B.程序可以编译运行,输出结果为:“long:  8”     
C.程序有编译错误,因为两个method()方法必须定义为静态(static)的
D.程序可以编译运行,但是没有输出
6.能作为类及其成员的修饰符是( )。
A.interface B.class
C.protected         D.public
7.下列方法定义中,方法头不正确的是( )。
A.public static x(double a){…}      B.public static int x(double y){…}
C.void x(double d){…}       D.public int x(){…}
8.构造方法在(   )时被调用。
A.类定义时  B.使用对象的变量时
C.调用对象方法时       D.创建对象时
9.下列不属于面向对象程序设计的基本特征的是( )。
A.多态        B.封装
C.继承        D.静态
10.请看下面的程序段
class Person{
  String name,department;
int age;
public Person(String n){name=n;}
public Person(String n,int a){name=n; age=a;}
public Person(String n, String d, int a ){
//doing the same as two arguments version if constructer
}
下面那个选项可以添加到// doing the same……处(    )
A.Person(n,a)   B.this(Person(n,a))
C.this(n,a)         D.this(name,age)
11.请看下面的程序段
class Test{
   private int m;
public static void fun(){
   //some code
}
}
方法fun()如何来访问变量m(     )
A.将private int m 改成protected int m      
B.将private int m 改成public int m
C.将private int m 改成static int m     
D.将private int m 改成int m  
12.有一个类A,对于其构造函数的声明正确的是( )。
A.void A(int x){…}  B.public A(int x){…}
C.A A(int x){…} D.int A(int x){…}
13.请看下面的程序段
public class Test{
  long a[]=new long[10];
  pubic static void main(String args[]){
System.out.println(a[6]);
}
}
哪一个选项是正确的(    )。
A.不输出任何内容   B.输出0
C.当编译时有错误出现         D.当运行时有错误出现
14.关键字( )表明一个对象或变量在初始化后不能修改。
A.extends       B.final
C.this      D.finalize
15.定义类A如下:
class A{
  int a,b,c;
  public void B(int x,int y, int z){ a=x;b=y;c=z;}
}
下面对方法B的重载哪些是正确的( )。
A.public void A(int x1,int y1, int z1){ a=x1;b=y1;c=z1;}
B.public void B(int x1,int y1, int z1){ a=x1;b=y1;c=z1;}
C.public void B(int x,int y){ a=x;b=y;c=0;}         
D.public B(int x,int y, int z){ a=x;b=y;c=z;}
17.下列方法的声明中不合法的是    。
A.float area( ){…}                      B.void area( ){…} 
C.area{…}                           D.int area(int r){…}
18、当方法中的局部变量与成员变量同名时,必须使用下列哪一个关键字指出成员变量    。
A.static            B.super         C.this              D.new

三、阅读程序题
1、写出运行结果:mainbord:华硕,cpu:Intel 。
public class Computer{  
    String mainbord,cpu;
    public Computer(String s1,String s2){   
        mainbord=s1;
        cpu=s2;     
    }
    public static void main(String[]args){  
        Computer c=new Computer("华硕","Intel");
        System.out.println("mainbord:"+c.mainbord+",cpu:"+c.cpu);       
    }   
}   
2、写出运行结果:Peter is 17 years old!。
public class Person{    
    String name;
int age;
public Person(String name,int age){ 
    this.name=name;
    this.age=age;
}
public static void main(String[]args){  
    Person c=new Person("Peter",17);
    System.out.println(c.name+" is "+c.age+" years old!");
}
}
3、写出运行结果:a=60  b=20  c=30public   class   abc{
public   static   void    main(String   args[ ]) {
SubSubClass   x = new   SubSubClass(10 , 20 , 30);
x.show();
}
}
class   SuperClass{    
int   a,b;
SuperClass(int aa , int   bb){   
a=aa;   b=bb;   
}
void   show( ){   
System.out.println("a="+a+"  b="+b);   
}
}
class    SubClass    extends    SuperClass{   
int c;
SubClass(int   aa,int   bb,int   cc){
     super(aa,bb);
c=cc;
}
 }
class    SubSubClass    extends    SubClass{    
int   a;
SubSubClass(int aa,int   bb,int   cc){    
super(aa,bb,cc);
a=aa+bb+cc;
}
void   show(){ 
System.out.println("a="+a+"  b="+b+"  c="+c);   
}
}
4.下面是一个类的定义,请将其补充完整
   class  Student  {
      String name;
      int age;
      Student( String  name, int a){
         this.name=name;
         age=a;
      }
}
5.下面是一个类的定义,请将其补充完整
   class A {
      String s;
      static  int a=3;
      A(String s){
         this.s=s;
      }
static int getA(){
            return a;
}
}