2java基础及面向对象试题.docx
- 文档编号:30220970
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:18
- 大小:39.67KB
2java基础及面向对象试题.docx
《2java基础及面向对象试题.docx》由会员分享,可在线阅读,更多相关《2java基础及面向对象试题.docx(18页珍藏版)》请在冰豆网上搜索。
2java基础及面向对象试题
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);false100
System.out.println(b);System.out.println(i);
4、指出下面运行输出结果
inta=100;
Stringmsg=“a=”+a;100100
System.out.ptintln(msg);
msg=“”+100+200;
System.out.ptintln(msg);100200
msg=100+200+””;
System.out.ptintln(msg);300
5、请简述for语句的执行流程
for(表达式1;表达式2;表达式3){
语句块
}
表达式一变量初始化,只执行一次,同时判断表达式2,如果为false程序结束,如果为true执行语句块,然后执行表达3,表达式2进行判断boolean值,同理可得如果为false程序结束,如果为true执行语句块,
6、输出2-100之内的所有质数
intcount=0;for(vari=2;i<=100;i++){for(varj=2;j
System.out.println(“为素数”)}}
7、冒泡排序
Int[]arr={1,2,3,4,5,6,7};
For(vari=0;i<=arr.length-1;i++){for(vara=0;a
8、随机生成长度为5的int类型的数组,并输出
Int[]arr={0,1,2,3,4,5,6,7,8,9};TreeSettr=newTreeSet();while(tr.size()<5){inti=(int)Math.random()*10;if(i Inti=0;int[]arr;While(true){intx=(int)Math.random()*10;arr[i]=x;i++;if(i<5){break;}} 9、什么是类 参考答案: 类是一个概念(名词)抽象的定义。 类定义了该类型对象的数据结构,称之为“成员变量”,同时,也定义了一些可以被调用的功能,称之为“方法”。 类是用于构建对象的模板,对象的实质就是内存中一块存储区域,其数据结构由定义它的类来决定。 10、简述JVM内存结构堆,栈和方法区别,分别存储的内容 参考答案: JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的对象。 栈用于存放程序运行过程当中所有的局部变量。 一个运行的Java程序从开始到结束会有多次方法的调用。 JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。 一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。 当某一个方法调用完成后,其对应的栈帧将被清除。 方法区该空间用于存放类的信息。 Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。 类的各种信息都在方法区保存。 11、什么是方法的重载 参考答案: 在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)。 编译器在编译时会根据其参数的不同,绑定到不同的方法。 12、什么是构造方法 参考答案: 在Java语言中可以通过构造方法实现对对象成员变量的初始化。 构造方法是在类中定义的方法。 但不同于其他的方法,构造方法的定义有如下两点规则: 1.构造方法的名称必须与类名同名。 2.构造方法没有返回值,但也不能写void。 13、重写和重载的区别 参考答案: 重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。 重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。 14、下面哪种情况属于方法重载A A)方法名相同,参数类型与个数不同 B)方法参数类型相同 C)方法参数个数相同 D)方法返回类型相同 E)方法名相同,方法参数类型与个数也相同 15、如果一个子类要继承父类,需要使用哪个关键字D A)thisB)superC)publicD)extends 16、classCard{}下列不属于Card类的构造方法的是: C 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语言特征的是: C A.平台无关 B.面向对象 C.支持指针类型 D.垃圾回收机制 19、下列代码的输出结果是: (C) 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、下列输出结果是: FOO classFoo{ publicstaticvoidtest(){ System.out.println("Foo");} } classMooextendsFoo{ publicstaticvoidtest(){ System.out.println("Moo"); } } publicstaticvoidmain(String[]args){ Fooff=newMoo();ff.test(); } 21、以下描述不正确的是? (C) A.finalclass不能被继承 B.final变量不能被修改 C.final成员变量不可以在构造方法中赋值 D.final方法不能被覆盖(overriden) 22、以下描述不正确的是? 接口的所有成员都应该公开,所以是 public 接口不能实例化,所以只有静态成员: static 接口的成员一定应该是常量,所以是 final。 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.不可以多层继承,即一个类不可以继承另一个类的子类 1.子类继承父类的成员变量 当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。 具体的原则如下: 1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量; 2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承; 3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。 如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。 2.子类继承父类的方法 同样地,子类也并不是完全继承父类的所有方法。 1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法; 2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承; 3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。 如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。 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=(ClassC)p1; 31、程序输出的结果是 classOne{ publicOne(){ System.out.print (1); } classTwoextendsOne{ publicTwo(){ System.out.print (2); } } classThreeextendsTwo{ publicThree(){ System.out.print(3); } } publicclassNumbers{ publicstaticvoidmain(String[]argv){ newThree(); }}C A.1 B.3 C.123 D.321 32、下面代码运行结果是: D publicclassAnimal{ publicStringnoise(){ return"peep"; } classDogextendsAnimal{ publicStringnoise(){ return"bark"; } } classCatextendsAnimal{ publicStringnoise(){ return"meow"; } } publicstaticvoidmain(String[]args){ Animalanimal=newDog(); Catcat=(Cat)animal; System.out.println(cat.noise()); } } A.peep B.bark C.meow D.抛出运行时异常 33、下面代码运行结果是: 34、 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 35、下列数组创建和初始化的方式不正确的是: 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; }} 36、请看下列代码: 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);B }} 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=(Cat)animal; 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 面向 对象 试题