java基础及面向对象试题.docx

上传人:b****5 文档编号:28563598 上传时间:2023-07-19 格式:DOCX 页数:14 大小:40.11KB
下载 相关 举报
java基础及面向对象试题.docx_第1页
第1页 / 共14页
java基础及面向对象试题.docx_第2页
第2页 / 共14页
java基础及面向对象试题.docx_第3页
第3页 / 共14页
java基础及面向对象试题.docx_第4页
第4页 / 共14页
java基础及面向对象试题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

java基础及面向对象试题.docx

《java基础及面向对象试题.docx》由会员分享,可在线阅读,更多相关《java基础及面向对象试题.docx(14页珍藏版)》请在冰豆网上搜索。

java基础及面向对象试题.docx

java基础及面向对象试题

JAVA基础

1、变量命名有哪些规定?

2、指出下面程序中的编译错误,并更正

intlenght=10;System.out.println(length;

int&size=2;System.out.println(&size;

intage;System.out.println(age;

3、指出下面程序运行输出结果

inti=100,j=200;

booleanb=(i>j&&(i++>100;

System.out.println(b;System.out.println(i;

4、指出下面运行输出结果

inta=100;

Stringmsg=“a=”+a;

System.out.ptintln(msg;

msg=“”+100+200;

System.out.ptintln(msg;

msg=100+200+””;

System.out.ptintln(msg;

5、请简述for语句的执行流程

for(表达式1;表达式2;表达式3{

语句块

}

6、输出2-100之内的所有质数

7、冒泡排序

8、随机生成长度为5的int类型的数组,并输出

9、什么是类

参考答案:

类是一个概念(名词抽象的定义。

类定义了该类型对象的数据结构,称之为“成员变量”,同时,也定义了一些可以被调用的功能,称之为“方法”。

类是用于构建对象的模板,对象的实质就是内存中一块存储区域,其数据结构由定义它的类来决定。

10、简述JVM内存结构堆,栈和方法区别,分别存储的内容

参考答案:

JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的对象。

栈用于存放程序运行过程当中所有的局部变量。

一个运行的Java程序从开始到结束会有多次方法的调用。

JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。

一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。

当某一个方法调用完成后,其对应的栈帧将被清除。

方法区该空间用于存放类的信息。

Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。

类的各种信息都在方法区保存。

11、什么是方法的重载

参考答案:

在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload。

编译器在编译时会根据其参数的不同,绑定到不同的方法。

12、什么是构造方法

参考答案:

在Java语言中可以通过构造方法实现对对象成员变量的初始化。

构造方法是在类中定义的方法。

但不同于其他的方法,构造方法的定义有如下两点规则:

1.构造方法的名称必须与类名同名。

2.构造方法没有返回值,但也不能写void。

13、重写和重载的区别

参考答案:

重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。

重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。

14、下面哪种情况属于方法重载

A)方法名相同,参数类型与个数不同

B)方法参数类型相同

C)方法参数个数相同

D)方法返回类型相同

E)方法名相同,方法参数类型与个数也相同

15、如果一个子类要继承父类,需要使用哪个关键字

A)thisB)superC)publicD)extends

16、classCard{}下列不属于Card类的构造方法的是:

A.Card({}

B.publicCard({}

C.publicvoidCard({}

D.privateCard({}

17、下列说法正确的是:

classCalssA{

publicintnumberOfinstances;

protectedClassA(intnumberOfinstances{

this.numberOfinstances=numberOfinstances;

}}

PublicclassExtendedAextendsClassA{

privateExtendedA(intnumberOfinstances{

super(numberOfinstances;

}

publicstaticvoidmain(String[]ages{

ExtendedAext=newExtendedA(420;

System.out.print(ext.numberOfinstances;

}}

A.运行后,输出420

B.运行时抛出异常

C.编译错误,所有的构造器必须是public的

D.编译错误,构造器不能private的

18、下列不属于java语言特征的是:

A.平台无关

B.面向对象

C.支持指针类型

D.垃圾回收机制

19、下列代码的输出结果是:

publicclassA{Publicvoidinfo({System.out.println(“Ainfo”;}}

publicclassBextendsA{publicvoidinfo({System.out.println(“Binfo”}

Publicstaticvoidmain(String[]ages{Bb=newB(;Aa=b;a.info(;}}

A.BinfoAinfo

B.AinfoBinfo

C.Ainfo

D.Binfo

20、下列输出结果是:

classFoo{publicstaticvoidtest({System.out.println("Foo";}}

classMooextendsFoo{publicstaticvoidtest({System.out.println("Moo";}}

publicstaticvoidmain(String[]args{Fooff=newMoo(;ff.test(;}

21、以下描述不正确的是?

()

A.finalclass不能被继承

B.final变量不能被修改

C.final成员变量不可以在构造方法中赋值

D.final方法不能被覆盖(overriden

22、以下描述不正确的是?

A.abstractclass一定有abstractmethod(s

B.abstractclass可以没有abstractmethod(s

C.定义abstractclass的目的是为了被继承

D.interface中定义的方法全是abstractmethods

E.interface中定义的变量全部是finalstatic变量

23、一个匿名内部类不可能是?

A.继承其他的类

B.实现了某一接口

C.定义了构造方法

D.可以使用成员变量

24、下面关于java语言中方法的说法错误的是:

A.方法调用时参数类型必须符合方法的定义 

B.参数传递是值传递的方式

C.如果方法没有返回值必须声明返回为void 

D.如果方法定义为返回void,则方法中不能出现return语句

25、下面运行的结果是:

publicclassFoo{ publicStringdoit(intx,inty{  return"a"; }

 publicStringdoit(int[]vals{  return"b"; }

 publicstaticvoidmain(String[]args{  Foof=newFoo(;  System.out.println(f.doit(4,5; }}

 A.代码publicStringdoit(int[]vals{行,编译出错

 B.代码System.out.println(f.doit(4,5;行,抛出运行时异常

 C.输出:

a

 D.输出:

b

26、关于下列代码说法正确的是:

publicclassFoo{

 publicintadd(inta,intb{

 returna+b;

 }

 publicstaticvoidmain(String[]args{

 Foofoo=null;

 System.out.println(foo.add(10,20;

 }

}

 A.编译错误

 B.正常运行,但无结果输出

 C.运行输出:

30

 D.运行时抛出NullPointerException异常

27、下列说法正确的有:

 A.class中的constructor不可省略

 B.constructor必须与class同名,但方法不能与class同名

 C.constructor在一个对象被实例化时执行

 D.一个class只能定义一个constructor

28、关于Java中继承的特点,下列说法正确的是:

A.使类的定义复杂化

B.Java只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的

 C.子类继承父类的所有成员变量和方法,包括父类的构造方法

D.不可以多层继承,即一个类不可以继承另一个类的子类

29、下列程序运行结果是?

30、请看下列代码

classClassA{}

classClassBextendsClassA{}

classClassCextendsClassA{}

publicclassTest{

 publicstaticvoidmain(String[]args{

 ClassAp0=newClassA(;

 ClassBp1=newClassB(;

 ClassCp2=newClassC(;

 ClassAp3=newClassB(;

 ClassAp4=newClassC(;

 <插入代码>

 }

}

下列选项中放置在<插入代码>处,使程序编译正确的是:

 A.p0=p1;

 B.p1=p2;

 C.p2=p4;

 D.p2=(ClassCp1;

31、程序输出的结果是

classOne{ publicOne({ System.out.print(1; }}

classTwoextendsOne{ publicTwo({ System.out.print(2; }}

classThreeextendsTwo{ publicThree({ System.out.print(3; }}

publicclassNumbers{ publicstaticvoidmain(String[]argv{ newThree(; }}

 A.1  B.3  C.123 D.321

32、下面代码运行结果是:

publicclassAnimal{ publicStringnoise({ return"peep"; }

 publicstaticvoidmain(String[]args{ Animalanimal=newDog(; Catcat=(Catanimal; System.out.println(cat.noise(; }}

classDogextendsAnimal{ publicStringnoise({ return"bark"; }}

classCatextendsAnimal{ publicStringnoise({ return"meow"; }}

 A.peep

 B.bark

 C.meow

 D.抛出运行时异常

33、下面代码运行结果是:

classSimpleCalc{ publicintvalue; publicvoidcalculate({ value+=7; }}

publicclassMultiCalcextendsSimpleCalc{ publicvoidcalculate({ value-=3; }

 publicvoidcalculate(intmultiplier{ calculate(; super.calculate(; value*=multiplier; }

 publicstaticvoidmain(String[]args{

 MultiCalccalculator=newMultiCalc(;

 calculator.calculate(2;

 System.out.println("Valueis:

"+calculator.value;

 }}

 A.Valueis:

8

 B.Valueis:

-8        

 C.Valueis:

12

 D.Valueis:

-12

34、下列数组创建和初始化的方式不正确的是:

 A.publicclassTest02{

 staticfinalint[]a={100,200};}

 B.publicclassTest02{

staticfinalint[]a;

 static{

 a=newint[2]; 

 a[0]=100; 

 a[1]=200;  }}

 C.publicclassTest02{

  finalint[]a;

 publicTest02({

  a=newint[2]; 

  a[0]=100;a[1]=200; }}

 D.publicclassTest02{

 staticfinalint[]a;

 staticvoidinit({ 

 a=newint[3]; 

 a[0]=100; 

 a[1]=200;  }}

35、请看下列代码:

publicabstractclassA{ abstractvoida1(; voida2({ }}

classBextendsA{ voida1({ } voida2({ }}

classCextendsB{ voidc1({ }}

Ax=newB(;Cy=newC(;Az=newC(;

下列选项中属于多态形式调用方法的是:

 A.x.a2(;

 B.z.a2(;

 C.z.c1(;

 D.y.c1(;

36、程序执行的结果是:

publicclassTest{

 intx=12;

 publicvoidmethod(intx{

  x+=x;

  System.out.println(x;

 }

 publicstaticvoidmain(String[]args{

  Testt=newTest(;

  t.method(5;

 }}

 A.5  B.10  C.12  D.17 

37、程序执行的结果是:

classFoo{ publicinta; publicFoo({ a=3; }

 publicvoidaddFive({ a+=5; }}

classBarextendsFoo{

 publicinta;

 publicBar({

 a=8; }

 publicvoidaddFive({ this.a+=5; }}

publicclassTestFoo{

 publicstaticvoidmain(String[]args{

 Foofoo=newBar(;

 foo.addFive(;

 System.out.println("Value:

"+foo.a; }}

 A.Value:

3

 B.Value:

8

 C.Value:

13

 D.Value:

18

38、程序运行结果

publicclassTest{

  publicstaticvoidmain(String[]args{

    Childc=newChild(;

  }}

classFather{

  publicFather({

    System.out.println("父类无参构造函数";  

  }

  publicFather(Stringname{

    System.out.println("父类有参构造函数";    

  }}

classChildextendsFather{

  publicChild({

    this("dd";

    System.out.println("子类无参构造函数";

  }

  publicChild(Stringname{

    super("dd";

    System.out.println("子类有参构造函数";

  }}

 A.父类有参构造函数

子类有参构造函数

子类无参构造函数

 B.父类无参构造函数 

子类有参构造函数 

子类无参构造函数

 C.子类有参构造函数 

子类无参构造函数 

父类无参构造函数

 D.子类无参构造函数 

子类有参构造函数 

父类无参构造函数

39、下列代码的运行结果是:

publicclassAnimal{

 publicStringnoise({ return"peep"; }

 publicstaticvoidmain(String[]args{

 Catcat=null;

 Animalanimal=newDog(;

 if(animalinstanceofCat{

  cat=(Catanimal;

  System.out.println(cat.noise(;

 }else{

  System.out.println("animalisnotCat'sinstance";

 }}}

classDogextendsAnimal{

 publicStringnoise({

 return"bark";

 }}

classCatextendsAnimal{

 publicStringnoise({

 return"meow";

 }}

 A.peep

 B.bark

 C.meow

 D.animalisnotCat'sinstance

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1