java测试题111203.docx
《java测试题111203.docx》由会员分享,可在线阅读,更多相关《java测试题111203.docx(17页珍藏版)》请在冰豆网上搜索。
![java测试题111203.docx](https://file1.bdocx.com/fileroot1/2023-5/27/5b6dd8da-a346-4398-8b1f-e5cacb08c06f/5b6dd8da-a346-4398-8b1f-e5cacb08c06f1.gif)
java测试题111203
Java测试题
一、选择题
1.执行下列代码后,那个语句是正确的?
publicclassPerson{
staticintarr[]=newint[10];
publicstaticvoidmain(Stringa[]){
System.out.println(arr[1]);
}
}
A.编译时将产生错误
B.编译时正确,运行时将产生错误
C.输出零*
D.输出空
2.定义一个类名为"MyClass"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:
()
A.privateclassMyClassextendsObject
B.classMyClassextendsObject
C.publicclassMyClass*
D.publicclassMyClassextendsObject
3.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?
()
A.ArrayListmyList=newObject();
B.ListmyList=newArrayList();·
C.ArrayListmyList=newList();
D.ListmyList=newList();
4.以下数据定义正确的是()
A.floatf=3.14f;·
B.Integerinteger=30;
C.byteb=10;·
D.booleanbo=(10>2)·;
E.Booleanboolean=newBoolean(true);
5.以下程序,正确的说法是()//类名和方法名可以相同,没有影响
publicclassTest{
Strings=“good”;
publicstaticvoidmain(String[]args){
Testtest=newTest();
test.test(“bye”);
}
publicvoidtest(Strings){
this.s+=s;
System.out.println(this.s);
}
}
A.输出“good”
B.输出“goodbye”·
C.输出“bye”
D.编译成功,运行失败
6.现有一变量booleanb;以下赋值正确的是()
A.b=0;B.b=(boolean)0
C.b=“true”;D.b=false;·
7.以下for循环的执行次数是()。
for(intx=0,y=0;(y!
=0)&&(x<4);x++);
A.无限次B.一次也不执行·
C.执行4次D.执行3次
8.下列哪些语句关于内存回收的说明是正确的?
()
A、程序员必须创建一个线程来释放内存;
B、内存回收程序负责释放无用内存·
C、内存回收程序允许程序员直接释放内存
D、内存回收程序可以在指定的时间释放内存对象
9.假如存在名为Test的类,则以下构造方法错误的是()
A.publicTest(){}
B.Test(floatf,floatf1){}
C.Test(intnum){}
D.Test(){}
E.voidTest(){}·//构造方法没有返回类型
10.以下代码运行结果是?
()
publicclassTest{
intnum=10;
publicstaticvoidmain(Stringargs[]){
intnum=1000;
Testtest=newTest();
System.out.println(test.num);
}
}
A.输出10
B.输出1000·
C.编译错误
D.编译成功,但是运行错误
///*******************************************************
publicclassTest{
intnum=10;
publicstaticvoidmain(Stringargs[]){
intnum=1000;
Testtest=newTest();
System.out.println(test.num);//usemember
System.out.println(num);//uselocal
}
}
Output:
101000
//***************************************
11.对于以下程序,运行将得到什么结果?
publicclassTest{
staticintj=20;
publicstaticvoidmain(String[]args){
inti=10;
Testp=newTest();
p.amethod(i);
System.out.println(i);
System.out.println(j);
}
publicvoidamethod(intx){
x=x*2;
j=j*2;
}
}
A.输出40和40
B.输出10和40·
C.编译错误
D.以上答案全错
12.以下程序输出是?
()
Strings1=“你好啊”;
Strings2=“你好啊”;
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
A.0和true
B.true和true·
C.true和false
D.编译错误
13.以下程序运行的结果是()
longl=(10%4);
switch(l)
case1:
System.out.println(“1”);
break;
case2:
System.out.println(“2”);
break;
case3:
System.out.println(“3”);
case4:
System.out.println(“4”);
A.输出1
B.输出2
C.输出3
D.输出4
E.编译错误·
14.
publicclassTest{
staticintnum=100;
privateintnum1=200;
publicstaticvoidmain(Stringargs[]){
Test.test();
}
publicstaticvoidtest(){
System.out.println(num+num1);
}
}
A.输出300
B.输出0
C.编译错误*
D.编译成功,运行时错误
二、分析填空
1.写出以下程序打印结果(注意换行)
classBase{
Stringvar="父类的变量";
voidmethod(){
System.out.println("父类的方法");
}
}
classSubextendsBase{
Stringvar="子类的变量";
voidmethod(){
System.out.println("子类的方法");
}
voidtest(){
Stringvar="子类的局部变量";
System.out.println("varis:
"+var);
System.out.println("this.varis:
"+this.var);
System.out.println("super.varis:
"+super.var);
method();
this.method();
super.method();
}
}
publicclassTest1{
publicstaticvoidmain(String[]args){
Subsub=newSub();
sub.test();
}
}
打印结果是:
varis:
子类的局部变量
this.varis:
子类的变量
super.varis:
父类的变量
子类的方法
子类的方法
父类的方法
***********2.写出以下程序打印结果(注意换行)
classBase2{
Stringvar="父类的变量";
staticStringstaticVar="父类静态变量";
voidmethod(){
System.out.println("父类的方法");
}
staticvoidstaticMethod(){
System.out.println("父类的静态方法");
}
}
classSub2extendsBase2{
Stringvar="子类的变量";
StringsubVar="子类另一个变量";
staticStringstaticVar="子类静态变量";
voidmethod(){
System.out.println("子类的方法");
}
voidsubMethod(){
System.out.println("子类另外的方法");
}
staticvoidstaticMethod(){
System.out.println("子类的静态方法");
}
}
publicclassTest2{
publicstaticvoidmain(String[]args){
Base2base=newSub2();
System.out.println("base.var="+base.var);
System.out.println("base.staticVar="+base.staticVar);
base.method();
base.staticMethod();
}
}
打印结果是:
------------3.以下程序能否编译通过,如果能够编译,写出打印结果(注意换行)
publicvoidamethod(intx)throwsException{
intnum=x/0;
}
publicvoidtrythis(){
try{
System.out.println("11");
amethod(10);
}catch(Exceptione){
System.out.println("22");
}catch(ArithmeticExceptiona){
System.out.println("33");
}finally{
System.out.println("44");
}
}
执行以上程序结果是:
现在的jdk-1.6.0这种情况编译不过去
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
4.写出以下程序打印结果(注意换行)
classBase{
staticinta=1;
static{
System.out.println("initbase");
}
}
classSubextendsBase{
staticintb=10;
static{
System.out.println("initsub");
}
}
publicclassTest{
static{
System.out.println("inittest");
}
publicstaticvoidmain(String[]args){
System.out.println("b="+Sub.b);
}
}
执行以上程序结果是:
5.分析以下程序
1classBase{
2publicBase(inti,intj){}
3publicBase(inti){
4this(i,0);
5Base(i,0);////
6}
7}
8publicclassSub{////
9publicSub(inti,intj){////
10super(i,0);////
11}
12voidmethod1(inti,intj){
13this(i,j);
14super(i,j);////
15}
16voidmethod2(inti,intj){
17super(i,j);////
18}
19voidmethods3(inti,intj){
20Basebase=newBase(0,0);
21base.Base(0,0);////
22}
}
指出以上程序可能会出现编译错误的地方:
6.写出以下程序打印结果(注意换行)
publicclassTest{
staticintnum1=0;
intnum2=0;
publicTest(){
num1++;
num2++;
}
publicTest(intx){
num1++;
num2+=x;
}
publicstaticvoidmain(String[]args){
Testt1=newTest
(1);
Testt2=newTest();
Testt3=newTest();
Testt4=newTest
(1);
System.out.println("t4.num1="+t4.num1);
System.out.println("t4.num2="+t4.num2);
}
}
以上程序打印出的内容是:
4
1//静态区域……动态的……
7.写出以下程序打印结果(注意换行)
classTest{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
publicclassMain{
publicstaticvoidmain(String[]args){
Testa=newTest();
a.setName("Hello");
Testb=newTest();
b.setName("world");
System.out.println("beforeswap:
"+"a="+a.getName()+";b="+b.getName());
swap(a,b);
System.out.println("afterswap:
"+"a="+a.getName()+";b="+b.getName());
}
privatestaticvoidswap(Testa,Testb){
Testtemp=a;
a=b;
b=temp;
System.out.println("swaping:
"+"a="+a.getName()+";b="+b.getName());
}
}
执行以上程序结果是:
beforeswap:
a=Hello;b=world
swaping:
a=world;b=Hello
afterswap:
a=Hello;b=world
------------------8.分析下面代码
1Strings="abc";
2Strings1=newString("abc");
3Strings2=newString("abc");
4Strings3=newString("abc");
5S1=s;
6s2=s1;
7s=s3;
8s3=s1;
以上代码中哪些行创建的对象可能成为垃圾回收的对象:
三、简答题
1.java中的数据类型分为哪两大类?
分别是什么?
是基本类型和引用类型。
基本类型有:
8中:
intbytelongshortcharbooleanfloatdouble
引用类型是:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2.方法重载和方法覆盖的区别有哪些?
重载:
overloading是:
同一类中方法名相同,参数不同
方法覆盖:
也叫重写override:
父子类中,子类的方法和父类的方法完全相同,子类重新写父类的方法。
3.final关键字主要用在哪些方面?
有什么意义?
final用在类前表示此类不可被继承;用在方法前表示此类不可以被重写,用在变量前表示此变量不可以被修改,即成常量。
------------------4.throw和throws关键字有什么区别?
Throw:
Throws:
方法体中方法体头
抛出的是对象抛出的是类
表示一定有异常可能有异常
抛出给某个类抛给上级,谁调用谁处理
-----抛出去必须捕获,并且捕获的异常范围要大于抛出的异常范围
-------------------------5.类的初始化时机包括哪些?
6.写出Java语言中基本数据类型对应的包装类。
Intbytelongshortcharbooleanfloatdouble
IntegerByteLongShortCharacterBooleanFloatDouble
8.写一个通用方法把任何一个类似“abcdefg”的字符串倒叙排,两种方法。
第一种:
借用另一个字符数组:
用indexof加for语句将String倒序到字符数组中,然后toString(或者StringBuffer)
第二种:
转换成字符数组用字符数组交换反序
第三种:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
9.对类的成员而言修饰符public,protected,缺省,private的权限访问范围?
Public不同包,不同类,
Protected父子类之间
缺省同包中
Private除了自己不行
---------------------10.Java中多态是通过什么方式进行的?
这些方式有什么区别?
11.请列举你使用过的String类的方法,并写出其返回值类型,参数个数与类型,至少写出五个(不可包含构造方法,并且可重载的方法只算一个)。
.length().toArrayList().indexof(int).charAt(char)
.subString(int).subString(int,int).replace(Oldchar,newchar)
12.抽象类与接口有什么区别?
抽象类abstract,接口定义interface
抽象类可以实现一些方法,接口不能实现任何方法
抽象类中定义的属性可以改变,接口中定义的属性不能改变(常)
抽象类单一继承,接口多接
抽象类被extends,接口被implements
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
------------13.请依次写出对象输入流,缓冲输入流,文件输入流,管道输入流以及数据输入流的类名。
14.简述break,continue,return的区别?
Bread跳出循环
Continue结束本次循环
Return可以做返回类型,可以在语句中遇到就结束