欢迎光临散文网 会员登陆 & 注册

JAVA练习题及答案

2021-02-14 10:08 作者:朝颜晚扶桑  | 我要投稿

第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(){         

System.out.println("I'm glad to meet you");    

}

 }

 class Xiti8{       

    public static void main(String args[]){     

     Speak sp=new Speak();       

     sp.speakHello();   

}

}

(1)上述源文件的名字是什么?Speak.java

 (2)上述源文件编译后生成几个字节码文件,这些字节码文件的名字分别是什么?Speak.class Xiti8.class

第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程序需要经过的三个主要步骤为   编写源程序     、编译生成字节码文件   和  解释运行字节码文件        。

9、Java程序中的单行注释符是(//    ),多行注释符是( /* */  )。

10、Java中布尔类型的常量有两种,它们是( true  )和(false)。

11、Java中用于定义小数的关键字有两个:(  float ) 和 ( double  ),后者精度高于前者

二、多选

1、下面有关char类型数据的定义中,正确得是_BE_______?

 A. 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 int[5]; 时,这代表这个数组所保存的变量类型是(int),数组名是(arr),数组的大小为(5),数组元素下标的使用范围是(0-4)。

二、多选

1、定义如下的二维数组b,下面的说法正确的是(ACD )。

 int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}};

A)b.length的值是3。  B)b[1].length的值是3。

B) C)b[1][1]的值是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};,则调用方法Arrays.sort(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、应用程序Test.java的源程序如下,在命令行键入:java Test aaa bb c,回车后输出的结果是 ( A)。

 public class Test {

 public static void main(String args[]) {

 int k1=args.length;

 int k2=args[1].length();

System.out.print(k1+" "+k2);

 }

 }

A) 3 2   B)1 2   C) 1 3   D) 3 3

4、关于下面代码的说法(C)是正确的?

public class Example{  

      public static void main(String[] args){

                int[] arr= new int[10];                       System.out.println(arr[1]);

       }

}

A、编译时产生错误  

B、编译时正确,运行时将产生错误   

C、输出零   

D、输出空(null)  

第3章(1)运算符&表达式&if语句练习题

一、填空

1、Java中,除了_字符型____和___布尔型__外,其他的所有的基本数据类型都支持加,减,乘,除四则运算。

 2、短路逻辑运算符包括___&&___和___||___。

 3、Java提供了&,&&和|,||运算符,除了一点外,&运算符和&&运算符在使用中  完全相同,|运算符和||运算符也相同。它们的不同点在于:__&__运算符和___|  运算符中的两个运算对象都要运算。

 4、顺序执行以下两个语句的输出结果是:__10_____。

String s=”我喜欢学习java!”;

System.out.println(s.length());

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 ( x>2){

if (y<5){

System.out.println("Message one");

}

else {

System.out.println("Message two");

}

}

else if(z>5){

System.out.println("Message three");

}

else {

System.out.println("Message four");

} 

二、单选

1、下面选项中,__D___的值与3*4的值相等?

A. 3/2   B. 3<2  C. 3*2^2   D. 3<<2

2、下面选项中,D_____的值与16/2^12的值相等?

 A. 16>4   B. 16/2   C. 16*4   D. 16>>2   E. 16>>>2

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 < MyIntArray.length ; i + + )

 if ( i % 2 = = 1 )

s += MyIntArray[i] ;

System.out.println(s); //s=20+40+60

2、下面程序段的执行结果是( 6 5 4 3 2   )  

 int a[] = { 2, 3, 4, 5, 6 };

   for (int i = a.length - 1; i >= 0; i--)

    System.out.print(a[i] + ""); //从大到小排序

 3、以“java Sub 3”运行以下程序的结果是:3th season __。 

public class Sub{

public static void main(String[] args) {

int i=Integer.parseInt(args[0]);

switch(i) {

case 1: System.out.println("First season"); break;

case 2: System.out.println("Second season"); break;

case 3: System.out.println("3th season"); break;

case 4: System.out.println("Last season"); break;

}

}

}

 

 4.switch(X)中,X可以接受的类型有_byte____,____char___,short,int。

 5、以下程序段的输出结果为

_value is two_

 value is three ______。

int j=2;

   switch ( j ) {

 case 2: System.out.print(“Value is two.”);

        case 2+1 : System.out.println(“Value is three.”); break;  default: System.out.println(“value is “+j); break;
  }

6.如果x=2;则下面程序执行后的结果是_34_____?

  switch (x) {

case 1: System.out.println(1);

   case 2: case 3: System.out.print(3);

case 4: System.out.println(4);

}

7、下面代码执行结束后l和j的值分别是___5,6___?

public static void main(String[] args) {

 int j=10;

 int l=1;

 do{

if(l++>--j) continue;

 }while(l<5)

 }

8、下面程序序的运行结果为( 20

 class test{

public static void main(String args[]){

 int sum=0;

for(int i=0;i<10;i++){

  if(i%2==0)

sum+=i;

 else continue;

 }

System.out.println(sum);

 }

}  

二、单选

1、应用程序的main方法中有以下语句,则输出的结果是 (B )。

 int b[][]={{1}, {2,2}, {2,2,2}};

 int sum=0;

 for(int i=0;i<b.length;i++) {

 for(int j=0;j<b[i].length;j++) {

sum+=b[i][j]; } }

System.out.println("sum="+sum);

 A) 32 B)11 C) 2 D) 3

2、应用程序的main方法中有以下语句,则执行后输出的结果是 (D)     int[] x={125,21,5,168,98};

 int max=x[0];

for(int i=1;i<x.length;i++){

 if(x[i]> max) max =x[i];

 }

 System.out.println(max);

A) 125 B) 5 C) 98 D) 168 

第4章(1)类和对象练习题

一、填空

 1、面向对象程序的主要特征:继承,____封装___________,___多态___________。

 2、____构造方法_是类中的一种特殊方法,用来定义对象的初始状态。

 3、构造方法在__创建对象__时被调用。

 4、系统类Math的random()方法可用来产生0-1.0之间的实数,则产生一个50

-100之间的整数的程序语句是_(int)Math.random()*50+50______。

 5、下面代码执行结束之后,打印出来的结果是__4____?

public class Happy {

 public static void main(String args[]) {

 int i=4; int j=2; methodA(i,j);

 }

 System.out.println(i);

 }

static public void methodA(int i,int j) {

i<<=j;

}

} 

☆6、在java语言中,有一个类是所有类和接口的父类,这个类的名称是java.lang.Object(Object)_____。

7、构造方法在__创建对象__时被调用。

 8、java运行系统通过垃圾回收机制/GC____周期性的释放无用对象所占用的内存,以完成对象的消除。

 9、阅读以下程序,输出结果为_1.23___。

  class Q1{

public static void main(String args[ ]){  

double d=1.23;  

Dec dec=new Dec( );  

dec.decrement(d);

System.out.println(d);  

}

  }

 class Dec{  

 public void decrement(double decMe){

 decMe = decMe -0.1;

 }

}

 10、阅读程序

public class Test{

 int x=12; public void method1(int x){

 x+=x;

   System.out.println(x);

  }

}

如果有如下的代码段:

  Test t=new Test();

    t.method1(5);

程序执行到这个地方,代码输出结果是__10___?

11、定义在类中的变量为_成员变量___,它不需要进行显式的初始化,定义在方法中的变量为__局部变量__,它需要进行显式的初始化。

 12、面向对象的模型中,最基本的概念是__类_和_对象__

二、多选题

13、下面选项中,__AC_______是合法的构造方法的重载?//无返回值  

public class ConstOver {  

  public ConstOver (int x, int y, int z) { }  

}

 A. 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 ){

System.out.println(“int version”);

          }

void crunch(String s){

 System.out.println(“String version”);

}

public static void main(String args[ ]){

Cruncher crun=new Cruncher ( );

char ch=’p’;

 crun.crunch(ch);

  }

}

3、以下程序段的输出结果为 _Integer String____。

 class IntORString{ void iosM( int i ){

System.out.print(“Integer ”);

 }

    void iosM(String s){

System.out.print(“String ”);

 }

 public static void main(String args[ ])

{

IntORString ios=new IntORString ( );

ios.iosM(‘a’);

ios.iosM(“1”);

 }

}

 4、如果有个类A,该类中有成员变量b和成员方法c(),则在创建该类得对象a  后,对该对象的成员变量和成员方法的调用方式分别是a.b___,__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) __________;//调用上面的一个参数的构造方法

 y = b;

}

 }

10.关键字___final____表明一个对象或变量在初始化后不能被修改。

 11、类是对象的抽象,是属性和操作的封装体,其中属性是事物静态特征的抽象,在程序中用数据成员描述,操作是事物动态特征的抽象,在程序中用成员方法描述。

 

第4章(3)包_访问权限_基本数据类型封装练习题

一、填空题

1、请填出在java.lang包中与下列基本数据类型相对应的封装类:

 float:java.lang.Float, char:_java.lang.Character________ , boolean:_java.lang.Boolean __________.

2、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);

 System.out.print(n1= =n2);

 System.out.print(“,”);

 System.out.println(n1! =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   )

A.private     B.Public  C.protected  D.final

4、void的含义:(  A    )

A.方法没有返回值   B.方法体为空  

C.没有意义             D. 定义方法时必须使用

 5、关于对象成员占用内存的说法哪个正确?(   B   )

A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

C.对象的方法不占用内存

 D.以上都不对

6、定义一个类,必须使用的关键字是(  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.覆盖方法可以不同名,而重载方法必须同名

 C.final修饰的方法可以被覆盖,但不能被重载

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 { }

 B.class 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");

 System.out.println(sub.i);

}

}

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() {

System.out.println("Art constructor");

}

}

class Drawing extends Art {

Drawing() {

super();

System.out.println("Drawing constructor");

}

}

class Cartoon extends Drawing {

Cartoon() {

super();

System.out.println("Cartoon constructor");

}

public static void main(String[] args) {

Cartoon x = new Cartoon();

}

}

11、写出以下程序的运行结果__4 ____ 

import java.io.*;

public class ATest{

public static void main(String args[]) {

SubClass sb = new SubClass( );

System.out.println(sb.fun( ));

}

}

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 

 A.void methoda();

 B. public double methoda();

 C. public final double methoda();

 D. static void methoda(double d1);

 E. protected void methoda(double d1);

3、请问如下选项中,_____可以使得以上代码编译没有错误。E

 1. public abstract class Test {

 2. public abstract void methodA();

 3.

4. public abstract void methodB()

   5. {

   6. System.out.println(“Hello”);

   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++) {

System.out.print(" " + c);  

}

}

}

class B extends A {

public void g() {

char cStart = 'α', cEnd = 'ω';

for (char c = cStart; c <= cEnd; c++) {

System.out.print(" " + c);

}

}

}

public class Xiti9 {

public static void main(String args[]) {

B b = new B();

b.f();

b.g();

}

}

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 = super.f(a, b);

return (a * b) / division;

}

}

public class Xiti9 {

public static void main(String args[]) {

A a = new A();

B b = new B();

System.out.println("最大公约数 :" + a.f(36, 24));

System.out.println("最小公倍数 :" + b.f(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(){}};

    in.show(4,5);

    in.func();

}

}

5.、下面程序的输出结果是:BCD

class Demo {

public static void func() throws Exception {

try{

throw new Exception();

   }

finally{

System.out.println("B");

}

}

public static void main(String[] args){

try{

func();

System.out.println("A");

}

catch(Exception e){

System.out.println("C");

}

System.out.println("D");

}

}

6.在java中所有的异常类都继承自java.lang.Throwable类,它有两个直接子类,一个是Error类,另一个是Exception类。

7、Java语言中,可以用throw语句和throws语句抛出异常,其中throws语句的作用是用来改变程序的执行流程,使程序跳到相应的异常处理语句中执行。throw语句把异常向上移交给调用这个方法的方法来处理。

8.下述代码执行后的结果是ACD

class X {

 public static void main(String [] args) {

 try {

 badMethod();

 System.out.print("A");

 }

 catch (Exception ex) {

 System.out.print("B");

 }

 finally {

 System.out.print("C");

 }

 System.out.print("D");

 }

 public static void badMethod() {}

}

单选题: 

1、下面选项中,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 = s1.concat(s2.toUpperCase());

 System.out.println(s1+s2+s3);

 }

}

2.

 String s1 = "ab";

 String s2 = "abcd";

 System.out.print("s1 " + (( s1== s2)? "==" : "!=") + " s2");

这个代码段显示的结果是s1 != s2?

3.下面程序段输出结果的第一行是rtrme,第二行是r

    String s="false()rtrme";

 String s2=s.substring(7);

 String s3=s2.replace('m','u');

 System.out.println(s2);

 System.out.println(s3.charAt(2));

 System.out.println(s3.toUpperCase());

第三行输出结果为 RTRUE

4.第5行的时候foo的值是baseball

String foo = "base";

foo.substring(0,3);

foo.concat("ket");//是返回 foo + "ket",但foo本身的值并不必变,

foo+="ball";//改成foo = foo.concat("ket"),结果就是baseketballSystem.out.println(foo);

5、如下这段代码执行后,字符串s的值是hellothere

     String s="hello";

 s.concat("mrs");

 s.toUpperCase();

 s+="there";

 System.out.println(s);

6.下面这段程序执行后,屏幕上显示的是:true。

public class Exam{

public static void main(String[] args){

char char1[]={'t','e','s','t'};

char char2[]={'t','e','s','t','1'};

String s1=new String(char1);

String s2=new String(char2,0,4);//提取字符数组char2[],从索引 0开始,提取个数为4个。

System.out.println(s1.equals(s2));//s1与s2中的实体(即内容)是否相同

}

}

7、请问执行完这段代码后,显示结果是abcd?  

String a = "ABCD";

String b = a.toLowerCase(); //将字符串a的值小写

 b.replace('a', 'd');//不影响字符串b,因为并未赋值给b

 b.replace('b', 'c');//不影响字符串b,因为并未赋值给b

 System.out.println(b);

8、Java中,用来获取字符串长度的函数是length(),用来取字符串子串的函数是substring()。

9、以下代码段将创建1个对象。

String s1="bc";

String s2="bc";

10、有下面这样的代码段,总共产生了2个对象。

String A, B, C ;

 A = new String( "1234" ) ;

 B = A ;

 C = A + B ;

11、有如下一段代码:

 Integer s = new Integer(9);

Integer t = new Integer(9);

 Long u = new Long(9);

则下面选项中返回值为true的是:CE。

 A. (s==u)

 B. (s==t)

 C. (s.equals(t))

 D. (s.equals(9)) //有疑问,但输出结果也为true.

 E. (s.equals(new Integer(9))

三、完成课后习题

课后习题1,3,5,6,7

1.下列叙述哪些是正确的?ABD

A.String类是final类,不可以有子类

B.String类在java.lang包中

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();

System.out.println(d.length);

String s=new String(d,0,7);

System.out.println(s);

}

}

5.请说出E类中的输出结果为9javaHello

public class E {

public static void main(String args[]){

String regex="\\djava\\w{1,}";

String str1="88javaookk";

String str2="9javaHello";

if(str1.matches(regex)){

System.out.println(str1);

}

if(str2.matches(regex)){

System.out.println(str2);

}

}

}

6.字符串调用public.String.toUpperCase()方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;字符串调用public.String.toLowerCase()方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母;String类的public.String.concat(String str)方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串相连接。编写一个程序,练习使用这3个方法。

public class E {

public static void main(String args[]){

       String s1,s2,s3,t1="ABCDabcd";

       System.out.println("字符串原来是这个样子: "+t1);

       s1=t1.toUpperCase();

       System.out.println("字符串中的小写字母变成大写是这个样子: "+s1);

       s2=t1.toLowerCase();

       System.out.println("字符串中的大写字母变成小写是这个样子: "+s2);

       s3=s1.concat(s2);

       System.out.println("大写字符串连接小写字符串是这个样子: "+s3);

}

}

7.String类的public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。编写程序,使用该方法得到一个字符串中的第一个和最后一个字符。

public class Xiti7 {

public static void main(String args[ ]){

String  s ="中华人民共和国";

    char a=s.charAt(0);

    char b=s.charAt(6);

    System.out.println("第一个字符:  "+a);

    System.out.println("最后一个字符:  "+b);

 }

}

第9章(2)实用常用类练习题答案

一、填空题

1、如果method()方法会抛出NullPointerException,则该代码段执行结束后b的值是______?1345 

StringBuffer b=new StringBuffer();

 try{

 b.append("1");

method();

b.append("2");

}catch(Exception a{

b.append("3");

 }

finally{

 b.append("4");

 }

b.append("5");

 2、String s1=”JAVA”;String s2=”java”; 则s1.equals(s2)的返回值是_____,s1.equalsIgnoreCase(s2)的返回值是_____。false true 

3、StringBuffer s1=new StringBuffer();StringBuffer s2=new StringBuffer(“Hello”); 则s1.capacity()的返回值是_____。s2.capacity()的返回值是____.16  21 

4、程序执行后的输出结果是:_____?

JavacJava public static void main(String a[]) {

StringBuffer s=new StringBuffer("Java");  

String c=new String("Java");

Hello(s,c);

 System.out.println(s+c);

}

public static Hello(StringBuffer s, String c) {

s.append("c");

c.repalce('a','d')

}

5、下列代码,执行的时候会错的是______? 4,6

1.StringBuffer sb = new StringBuffer("abc");

2.String s = new String("abc");

3.sb.append("def");

4.s.append("def");

5.sb.insert(1, "zzz");

6.s.concat(sb);

 7.s.trim();

二、单项选择题

1、 _______选项插在第三行处,程序执行后可以得到结果4247? B 

1.public class Cer{

2. public static void main(String[] args){

3. ___________________________________

 4. System.out.println(s);

5. }

6. }

A. String s=”123456789”; s=(s-“123”).replace(1,3,,”24”)-“89”; B.StringBuffer s=new StringBuffer(“123456789”); s.delete(0,3).replace(1,3,”24”).delete(4,6);

C.StringBuffer s=new StringBuffer(“123456789”); s.subString(3,6).delete(1,3).insert(1,”24”);

 D.StringBuilder s=new StringBuilder(“123456789”); s.subString(3,6).delete(1,2).insert(1,”24”);

 2、应用程序的main方法中有以下语句,则输出的结果是 (  B    )。    String s = "xxxxxxxxxxxxxxx#123#456#zzzzz";  

  int n = s.indexOf("#");    

  int k = s.indexOf("#", n+1);  

  String s2 = s.substring(n+1, k);

   System.out.println(s2);  

A) 123456     B) 123     C) xxxxxxxxxxxxxxx      D) zzzzz

3、下列程序段执行后的结果是(  A    )。

 String s = new String("abcdefg");

for(inti=0;i<s.length();i+=2){  

   System.out.print(s.charAt(i));

}   

A) aceg   B) ACEG    C) abcdefg    D) abcd   

 4、应用程序的main方法中有以下语句,则输出的结果是(    A  )。       String  s1=new String("abc");    

     String  s2=new String("abc");    

      boolean b1=s1.equals(s2);   

      boolean b2=(s1==s2);                      System.out.print(b1+"   "+b2);  

          A)true  false        B) false  true      C) true  true      D)false  false   

 5、应用程序的main方法中有以下语句,则输出的结果是 (  A    )。   String s1="0.5", s2="12";         

double x=Double.parseDouble(s1);

  int    y=Integer.parseInt(s2);

   System.out.println(x+y);

A) 12.5         B) 120.5        C) 12           D) “12.5”        


JAVA练习题及答案的评论 (共 条)

分享到微博请遵守国家法律