java练习题答案.pdf
第 1 章 java 语言概述习题 一、填空题 1、面向对象程序的主要特征:继承,_封装_,_多态 _。2、java 中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是 因为它使代码可以_重用或复用_.3、java 语言中,为将源代码翻译成 _字节码_文件时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。4、javac 是 java 语言中的编译器,基本语法是:javac选项 _文件名_,java是 java 语言中的解释执行器,基本语法是:java选项_类名_.5、java 语言的主要贡献者是谁 James gosling 二、三、单选题 1、编译 Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。A、java B、.class C、html D、.exe 2、main 方法是 Java Application 程序执行的入口点,关于 main 方法的方法首部,以下(B)项是合法的。A、public static void main()B、public static void main(String args)C、public static int main(String arg)D、public void main(String arg)三、判断 1、Java 语言具有较好的安全性和可移植性及与平台无关等特性。2、Java 语言的源程序不是编译型的,而是编译解释型的。四、问答题 1、编写、运行 java 程序需要经过哪些主要步骤 答:1.编写源文件,扩展名必须是.java 2.编写 java 源程序,使用 java 编译器编写源文件,得到字节码文件 3.运行 java 程序,使用 javaSE 平台只不过的 java 解释器来解释执行字节码文件。2、阅读下列 java 源代码文件,并回答问题 public class Speak void speakHello()Im glad to meet you);class Xiti8 public static void main(String args)Speak sp=new Speak();();(1)上述源文件的名字是什么 (2)上述源文件编译后生成几个字节码文件,这些字节码文件的名字分别是什么 第 2 章(1)基本数据类型练习题 一、填空题 1、java 基本数据类型中整型,字符型分别占用字节数为_4_,_2_.2、java 语言中的浮点数根据数据存储长度和数值精度的不同,进一步分为_ float_和_double_两种具体类型。3、Java 中的浮点类型有两类,分别是 float 和 double 类型,其中 float 取 7_位有 效数据,double 取_15_位有效数据。4、布尔类型常量只有两个_true_和_false_,其中前者表示逻辑真,后者表示逻辑假。5、浮点型常量又称实型常量,用于表示有小数部分的十进制数,它有两种表示形式:_小数形式_和_指数形式_。6、java 语言中的各种数据类型之间提供自动转换,如第一种操作数为 byte,而第二种操作数为 float,则其结果是_float_类型。7、java 语言的各种数据类型之间提供两种转换,分别是_自动转换_和_强制转换_。8、开发与运行 Java 程序需要经过的三个主要步骤为 编写源程序 、编译生成字节码文件 和 解释运行字节码文件 。Java 程序中的单行注释符是(char ch=“a”;B.char ch=;C.char ch=cafe;D.char ch=“cafe”;E.char ch=ucafe;F.char ch=u10100;G.char ch=(char)true;三、判断 1、Java 语言使用的是 Unicode 字符集,每个字符在内存中占 8 位。,16 位 2、Java 语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。四、单选 1、以下哪个不是 Java 的基本数据类型(B)A、int B、Boolean C、float D、char 2、如下哪个是 Java 中有效的关键字(c )A、name B、hello C、false D、good 】第 2 章(2)数组练习题 一、填空题 1、当声明一个数组 int arr=new int5;时,这代表这个数组所保存的变量类型是(int),数组名是(arr),数组的大小为(5),数组元素下标的使用范围是(0-4)。二、多选 1、定义如下的二维数组 b,下面的说法正确的是(ACD)。int b=1,2,3,4,5,6,7,8;A)的值是 3。B)b1.length 的值是 3。B).C)C)b11的值是 5。D)二维数组 b 的第一行有 3 个元素 三、单选 1、以下哪项是 main 方法的正确形参(B)A、String args B、String ar C、Char arg D、StringBufferargs 2、有整型数组:int x=12,35,8,7,2;,则调用方法(x)后,数组 x 中的元 素值依次是(A).A)2 7 8 12 35 B)12 35 8 7 2 C)35 12 8 7 2 D)8 7 12 35 2 3、应用程序的源程序如下,在命令行键入:java Test aaa bb c,回车后输出的结果是(A)。:public class Test public static void main(String args)int k1=;int k2=args1.length();+k2);A)3 2 B)1 2 C)1 3 D)3 3 4、)5、关于下面代码的说法(C)是正确的 public class Example public static void main(String args)int arr=new int10;A、编译时产生错误 B、编译时正确,运行时将产生错误 。C、输出零 D、输出空(null)第 3 章(1)运算符&表达式&if 语句练习题 一、填空 1、Java 中,除了_字符型_和_布尔型_外,其他的所有的基本数据类型都支持加,减,乘,除四则运算。2、短路逻辑运算符包括_&_和_|_。3、Java 提供了&,&和|,|运算符,除了一点外,&运算符和&运算符在使用中 完全相同,|运算符和|运算符也相同。它们的不同点在于:_&_运算符和_|运算符中的两个运算对象都要运算。4、顺序执行以下两个语句的输出结果是:_10_。String s=”我喜欢学习 java!”;5、下面代码定义了两个整型变量和一个字节型变量,则将 num1+num2 的值赋给 num3 变量的语句是_num3=(byte)(num1+num2)_。int num1=53;int num2=47;byte num3;、6、下面代码中,“Type”应该换成什么类型_double_ public class ReturnIt return Type methodA(byte x,double y)return(long)x/y*2;7、Java 语言提供了两条基本的分支选择语句:_if_语句和 switch_语句 8、以下程序段的输出结果为Message four int x=0,y=4,z=5;if(x2)if(y5)Message three);else Message four);¥二、单选 1、下面选项中,_D_的值与 3*4 的值相等 A.3/2 B.32 C.3*22 D.34 B.16/2 C.16*4 D.162 E.162 3、有以下方法的定义,请选择该方法的返回类型(D)。ReturnType method(byte x,double y)-return(short)x/y*2;A、byte B、short C、int D、double 第 3 章(2)switch&循环语句练习题 一、填空题 1、设有数组定义:int MyIntArray =10,20,30,40,50,60,70;则执行以下几个语句后的输出结果是 120。int s=0;for(int i=0;i-j)continue;while(l5);8、下面程序序的运行结果为(20)class test public static void main(String args)int sum=0;for(int i=0;i10;i+)if(i%2=0)sum+=i;else continue;二、单选 1、应用程序的 main 方法中有以下语句,则输出的结果是(B)。*int b=1,2,2,2,2,2;int sum=0;for(int i=0;i;i+)for(int j=0;jbi.length;j+)sum+=bij;sum=+sum);A)32 B)11 C)2 D)3 2、应用程序的 main 方法中有以下语句,则执行后输出的结果是(D)int x=125,21,5,168,98;)int max=x0;for(int i=1;i max)max=xi;A)125 B)5 C)98 D)168 第 4 章(1)类和对象练习题 .一、填空 1、面向对象程序的主要特征:继承,_封装_,_多态_。2、_构造方法_是类中的一种特殊方法,用来定义对象的初始状态。3、构造方法在_创建对象_时被调用。4、系统类 Math 的 random()方法可用来产生之间的实数,则产生一个 50-100 之间的整数的程序语句是_(int)()*50+50_。5、下面代码执行结束之后,打印出来的结果是_4_ public class Happy 、public static void main(String args)int i=4;int j=2;methodA(i,j);static public void methodA(int i,int j)i=j;6、在 java 语言中,有一个类是所有类和接口的父类,这个类的名称是。7、构造方法在_创建对象_时被调用。8、java 运行系统通过垃圾回收机制/GC_周期性的释放无用对象所占用的内存,以完成对象的消除。9、阅读以下程序,输出结果为。class Q1 public static void main(String args)double d=;Dec dec=new Dec();(d);class Dec public void decrement(double decMe)decMe=decMe;10、阅读程序 public class Test int x=12;public void method1(int x)x+=x;如果有如下的代码段:Test t=new Test();(5);程序执行到这个地方,代码输出结果是_10_ 11、定义在类中的变量为_成员变量_,它不需要进行显式的初始化,定义在方法中的变量为_局部变量_,它需要进行显式的初始化。12、面向对象的模型中,最基本的概念是_类_和_对象_。二、多选题 13、下面选项中,_AC_是合法的构造方法的重载 ConstOver()|B.Protected int ConstOver()C.Private ConstOver(int z,int y,byte x)D.Public Object ConstOver(int x,int y,int z)E.Public void ConstOver(byte x,bytey,byte z)14、下面说法中_AC_是对方法 setVar()重载的方法。public class MethodOver public void setVar(int a,int b,float c)A.Private void setVar(int a,float c,int b)B.Protected void setVar(int a,int b,float c)C.Public int setVar(int a,float c,int b)return a;D.Public int setVar(int a,int b,float c)return a;E.Protected float setVar(int a,int b,float c)return c;。第 4 章(2)可变参数,static 与 this 练习题 一、填空题 1、在下面程序划线处填入适当的内容。class MyClass static int var=100;_static public static_ int getVar()return var;2、以下程序段的输出结果为 int version_。class Cruncher void crunch(int i)version”);void crunch(String s)version”);【public static void main(String args)Cruncher crun=new Cruncher();char ch=p;(ch);3、以下程序段的输出结果为 _Integer String_。;class IntORString void iosM(int i)”);void iosM(String s)”);public static void main(String args)。IntORString ios=new IntORString();(a);(“1”);4、如果有个类 A,该类中有成员变量 b 和成员方法 c(),则在创建该类得对象 a 后,对该对象的成员变量和成员方法的调用方式分别是,_a,c()_。5、以下代码段创建了_2_个对象,声明了_3_个变量。Thing item,stuff;|item=new Thing();Thing entity=new Thing();6、通过类 MyClass 中的不含参数的构造函数象 obj,可通过 以下语句实现:_MyClass obj=new MyClass()_。7、下面_AD_情况下,系统会为类 A 自动产生构造函数 A.class A B.class A public A()C.class A public A(int x)D.class Z class A extends Z void A()8、请问构造函数、成员变量初始化以及静态成员变量初始化三者的先后顺序是_静态成员变量初始化,成员变量初始化,构造函数_。9、划线处应填的一句代码:_ this(a)_。public class Example int x,y;public Example(int a)x=a;public Example(int a,int b)_this(a)_;2、3、java 中提供了四种访问控制符,分别是:public_,_protected_,_private_,_缺省(friendly)_ 3、以下程序段的输出结果为 _true,false_。public class EqualsMethod public static void main(String args)Integer n1=new Integer(47);Integer n2=new Integer(47);=n2);=n2);4、在 java 中,将具有相同属性的对象抽象成_类_。然后将它按照程序设计所需要的常用方法和接口封装成_包_。5、创建一个名为 MyPackage 的包的语句是 package Mypackage ,该语句应该放在程序的位置为:放在程序的第一句 。6、导入 mypackage 包中的所类的命令是 import mypackage.*;二、单选题 :1、不允许作为类及类成员的访问控制符的是(C)。A.public B.private C.static D.protected 2、为 AB 类的一个无形式参数无返回值的方法 method 书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为(A )。A.static void method()B.public void method()C.final void method()D.abstract void method()3、下列修饰符中与访问控制无关的是(D )Aprivate BPublic Cprotected Dfinal 4、void 的含义:(A )A&B方法没有返回值 B方法体为空 C没有意义 D.定义方法时必须使用 5、关于对象成员占用内存的说法哪个正确(B )A同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C对象的方法不占用内存 D以上都不对 6、7、定义一个类,必须使用的关键字是(B )A、public B、class C、interface D、static 第 5 章(1)继承与多态练习题答案 一、选择题 1、关于继承的说法正确的是:(B )A、子类将继承父类所有的属性和方法。B、子类将继承父类的非私有属性和方法。C、子类只继承父类 public 方法和属性 D、子类只继承父类的方法,而不继承属性 2、this 和 super:(B )A、都可以用在 main()方法中 B、都是指一个内存地址 C、不能用在 main()方法中 D、意义相同 3、关于 super 的说法正确的是:(B )A、是指当前对象的内存地址 B、是指当前对象的父类对象的内存地址 C、是指当前对象的父类 D、可以用在 main()方法中 4、覆盖与重载的关系是(A)A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中 B覆盖方法可以不同名,而重载方法必须同名 Cfinal 修饰的方法可以被覆盖,但不能被重载 D覆盖与重载是同一回事 5、定义一个类,必须使用的关键字是(B )A、public B、class C、interface D、static 6、如果有如下这样一段代码 class A A()class B extends A 请在下面项中,正确的说法是:_ B D A、类 B 的构造函数的访问权限是 public B、类 B 的构造函数没有参数 C、类 B 的构造函数中包含 this()方法的调用;D、类 B 的构造函数中包含 super()的调用 7、下面(AD)情况下,系统会为类 A 自动产生构造函数(A.class A A public A()C.class A public A(int x)D.class Z class A extends Z void A()二、填空题 1、java 中提供了两种用于多态的机制 重载,覆盖.2、this 代表了当前对象的引用,super 表示的是当前对象的父类 对象。3、如果子类中覆盖了父类中的同名方法,则在子类中调用父类中的同名方法是使用关键字 super。在一个类的内部可以直接调用本类的对象,也可以使用关键字 this 来调用。*4.子类可以继承父类的成员变量 和成员方法,但是不能继承父类的构造函数。5、下面代码执行后的结果是 2 class Super public int i=0;public Super(String text)i=1;【public class Sub extends Super public Sub(String text)super(text);i=2;public static void main(String args)Sub sub=new Sub(Hello);,6、如果在一个文件中有 package,import 以及 class 的定义,请给出三者在文件中的先后顺序。package,import,class 7.父类的 final 方法可以被子类重写吗答案:不可以#第 5 章(2)接口练习题答案 一、选择题 1、定义一个接口必须使用的关键字是(C )A、public B、class C、interface D、static 2、抽象方法:(C )A、可以有方法体 B、可以出现在非抽象类中 C、是没有方法体的方法 D、抽象类中的方法都是抽象方法 3、关于接口哪个正确(A )A、实现一个接口必须实现接口的所有方法 B一个类只能实现一个接口 C接口间不能有继承关系 D接口和抽象类是同一回事 二、填空题 -1、抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。final 方法是不能被当前类的子类重新定义的方法。2、在 Java 程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。3、接口由两部分组成接口声明以及接口体。4、接口可以看作是仅容纳抽象法以及常量,而又不能直接生成对象的特殊类。5、用于将一个类修饰为最终类的关键字是 final。用于声明一个类为抽象类的关键字是abstract。6、abstract 不能和 final 共同修饰一个类。7、java 中用 extends 关键字指明继承关系.用 implements 关键字指明对接口的实现。8、如果 Alpha 类继承 Beta 类,Alpha 类被称为子(基)类,Beta 类被称为父(超)类。9、子类可以继承父类的成员变量 和成员方法,但是不能继承父类的构造函数。10、下面程序的输出结果是:_ Art constructor,Drawing constructor,Cartoon constructor。class Art Art()Art constructor);class Drawing extends Art Drawing()super();Drawing constructor);class Cartoon extends Drawing Cartoon()。super();Cartoon constructor);public static void main(String args)Cartoon x=new Cartoon();11、写出以下程序的运行结果_4 _ import.*;public class ATest public static void main(String args)SubClass sb=new SubClass(););class SuperClass-int a=24,b=5;class SubClass extends SuperClass int fun()return a%b;三、多项选择题 1、与第 2 行等价的定义方式是_。A B 1.public interface Foo 2.int k=4;3.A.final int k=4;B.public int k=4;C.abstract int k=4;D.volatile int k=4;E.protected int k=4;%2、下面几个方法中,_可以放在接口(interface)中。A B methoda();B.public double methoda();C.public final double methoda();D.static void methoda(double d1);E.protected void methoda(double d1);3、4、请问如下选项中,_可以使得以上代码编译没有错误。E 1.public abstract class Test 2.public abstract void methodA();3.4.public abstract void methodB()5.6.7.8.$A 给 methodA 加上方法体;B 将第 5-7 行的代码用“;”代替 C 将类 Test 前面的修饰符 abstract 去掉 D 将方法 methodA 前面的修饰符 abstract 去掉 E 将方法 methodB 前面的修饰符 abstract 去掉 4、下面选项中,_可以是合法的方法重写的形式。BD class BaseClass private float x=0f;protected float getVar()return x;class SubClass extends BaseClass private float x=0f;_ A.float getVar()return x;B.public float getVar()return x;C.public double getVar()return x;D.protected float getVar()return x;E.public float getVar(float f)return f;5、如果有如下这样一段代码 class A A()class B extends A 请在下面项中,正确的说法是:B D A.类 B 的构造函数的访问权限是 public B、类 B 的构造函数没有参数 C、类 B 的构造函数中包含 this()方法的调用;D、类 B 的构造函数中包含 super()的调用 ,三、课后习题答案 3什么类中可以有 abstract 方法 答案:abstract 类。4什么叫对象的上转型对象 答案:假设 B 类是 A 类子类或间接子类,当我们用子类 B 创建一个对象,并把这个对象的引用放到 A 类的对象中时,称这个 A 类对象是子类对象的上转型对象。父引用指向子对象。5什么叫接口的回调.答案:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。6下列叙述哪些是正确的 AD A.final 类不可以有子类 B.abstract 类中只可以有 abstract 方法。C.abstract 类中可以有非方法,但该方法不可以用 final 修饰。D.不可以同时用 final 和 abstract 修饰一个方法。9.写一个类 A,该类创建的对象可以调用方法 f 输出英文字母表,然后再编写一个该类的子类 B,要求子类 B 必须继承 A 类的方法 f(不允许重写),子类创建的对象不仅可以调用方法 f 输出英文字母表,而且可以调用子类新增的方法 g 输出希腊字母表。class A public final void f()char cStart=a,cEnd=z;for(char c=cStart;c=cEnd;c+)+c);(class B extends A public void g()char cStart=,cEnd=;for(char c=cStart;c=cEnd;c+)+c);,public class Xiti9 public static void main(String args)B b=new B();();();?10.写一个类,该类有一个方法 public int f(int a,int b),该方法返回 a 和 b 的最大公约数。然后再编写一个该类的子类,要求子类重写方法 f,而且重写的方法将返回 a 和 b 的最小公倍数;要求在重写的方法体中首先调用被隐藏的方法返回 a 和 b 的最大公约数 m,然后将乘积(a*b)/m 返回;要求在应用的程序的主类中分别使用父类和子类创建对象,并分别调用方法 f 计算两个正整数的最大公约数和最小公倍数。class A public int f(int a,int b)if(b a)int temp=0;temp=a;a=b;b=temp;int r=b%a;while(r!=0)b=a;a=r;r=b%a;。return a;class B extends A public int f(int a,int b)int division=(a,b);return(a*b)/division;public class Xiti9 public static void main(String args)A a=new A();B b=new B();最大公约数:+(36,24);最小公倍数:+(36,24);%第 6 章内部类与异常类练习题 一、填空题 1、Throwable 类有两个子类,分别是 Error 和 Exception.#2、所有异常的根类是 Throwable 类,throw 关键字的作用是引发异常。3、try 关键字负责定义处理异常的程序,再来由 catch 关键字来捕获异常。4、补足代码;调用两个函数,要求用匿名内部类 interface Inter void show(int a,int b);void func();class Demo !public static void main(String args)Inter in=new Inter()Void show(int a,int b)Void func();(4,5);();&5.、下面程序的输出结果是:BCD class Demo public static void func()throws Exception try throw new Exception();finally B);public static void main(String args)try func();A);catch(Exception e)C);D);!6.在 java 中所有的异常类都继承自类,它有两个直接子类,一个是 Error 类,另一个是 Exception 类。7、Java 语言中,可以用 throw 语句和 throws 语句抛出异常,其中 throws 语句的作用是用来改变程序的执行流程,使程序跳到相应的异常处理语句中执行。throw语句把异常向上移交给调用这个方法的方法来处理。8.下述代码执行后的结果是ACD class X public static void main(String args)【try badMethod();A);catch(Exception ex)B);finally 、C);D);public static void badMethod()单选题:1、.2、下面选项中,C 不能用在 throw 语句中 A.Error B.RuntimeException C.Object D.Throwable E.Exception 第 9 章 String 类练习题答案 一、填空 1、程序执行后的显示结果是abcdefabcDEF。public class Question public static void main(String args)String s1=abc;String s2=def;String s3=();#2.String s1=ab;String s2=abcd;s1 +(s1=s2)=:!=)+s2);这个代码段显示的结果是 s1!=s2 3.下面程序段输出结果的第一行是 rtrme,第二行是 r。#String s=false()rtrme;String s2=(7);String s3=(m,u);第三行输出结果为 RTRUE。4.第 5 行的时候 foo 的值是 baseball String foo=base;(0,3);(ket);(s=u)B.(s=t)C.(t)D.(9)E.(new Integer(9)三、完成课后习题 课后习题 1,3,5,6,7 1.$2.下列叙述哪些是正确的 ABD 类是 final 类,不可以有子类 类在包中 C.”abc”=”abc”的值是 false D.”abc”.equals(“abc”)的值是 true 3.请说出 E 类中的输出结果为 13 abc 夏日 public class E !public static void main(String args)byte d=abc 夏日的海滩.getBytes();String s=new String(d,0,7);5.请说出 E 类中的输出结果为 9javaHello public class E public static void main(String args)String regex=djavaw1,;String str1=88javaookk;String str2=9javaHello;if(regex)if(regex)|6.字符串调用方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;字符串调用方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母;String 类的 str)方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串相连接。编写一个程序,练习使用这 3 个方法。public class E public static void main(String args)String s1,s2,s3,t1=ABCDabcd;字符串原来是这个样子:+t1);s1=();字符串中的小写字母变成大写是这个样子:+s1);s2=();字符串中的大写字母变成小写是这个样子:+s2);s3=(s2);大写字符串连接小写字符串是这个样子:+s3);)7.String 类的 public char charAt(int index)方法可以得到当前字符串 index位置上的一个字符。编写程序,使用该方法得到一个字符串中的第一个和最后一个字符。public class Xiti7 public static void main(String args)String s=中华人民共和国;char a=(0);char b=(6);第一个字符:+a);最后一个字符:+b);第 9 章(2)实用常用类练习题答案 一、填空题 1、如果 method()方法会抛出 NullPointerException,则该代码段执行结束后 b的值是_1345 StringBuffer b=new StringBuffer();|try (1);method();(2);catch(Exception a (3);finally (4);(5);2、String s1=”JAVA”;String s2=”java”;则(s2)的返回值是_,(s2)的返回值是_。false true 3、StringBuffer s1=new StringBuffer();StringBuffer s2=new StringBuffer(“Hello”);则()的返回值是_。()的返回值是 21 4、程序执行后的输出结果是:_ JavacJava public static void main(String a)StringBuffer s=new StringBuffer(Java);String c=new String(Java);Hello(s,c);public static Hello(StringBuffer s,String c)(c);(a,d)5、下列代码,执行的时候会错的是_ 4,6 1StringBuffer sb=new StringBuffer(abc);2String s=new String(abc);3(def);4(def);5(1,zzz);6(sb);7();二、单项选择题 1、_选项插在第三行处,程序执行后可以得到结果 4247 B class Cer 2.public static void main(String args)3._ 4.5.6.A.String s=”9”;s=(s-“123”).replace(1,3,”24”)-“89”;s=new StringBuffer(“9”);(0,3).replace(1,3,”24”).delete(4,6);s=new StringBuffer(“9”);(3,6).delete(1,3).insert(1,”24”);s=new StringBuilder(“9”);(3,6).delete(1,2).insert(1,”24”);2、应用程序的 main 方法中有以下语句,则输出的结果是(B )。String s=xxxxxxxxxxxxxxx#123#45