【精选】JAVA练习题·期末

您所在的位置:网站首页 编辑java源程序文件产生的字节码文件的扩展名为 【精选】JAVA练习题·期末

【精选】JAVA练习题·期末

#【精选】JAVA练习题·期末| 来源: 网络整理| 查看: 265

一、单选择题 编译Java  Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(    B  )。

    A. java           B. class         C. html             D. .exe

设 x = 1 , y = 2 , z = 3,则表达式  y+=z--/++x  的值是(  A    )。

    A. 3             B. 3. 5           C. 4               D. 5

不允许作为类及类成员的访问控制符的是(   C   )。

    A. public        B. private        C. static            D. protected

以下关于继承的叙述正确的是(  A  )。

A、在Java中类只允许单一继承

B、在Java中一个类只能实现一个接口

C、在Java中一个类不能同时继承一个类和实现一个接口

D、在Java中接口只允许单一继承

为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(  B  )。

    A. static void method( )                    B. public void method( )   

    C. final void method( )                     D. abstract void method( )

Java application中的主类需包含main方法,以下哪项是main方法的正确形参?(  B  )

A、 String  args                                               B、String  args[]   

C、Char  arg                                                       D、StringBuffer args[]

已知如下定义:String s = "story"; 下面哪个语句不是合法的 ?                (    )

A、s += "books";                           B、s = s + 100;

C、int len = s.length;                      D、String t = s + “abc”;

int len = s.length(),String 使用的是length方法,而数组使用的是length属性

下列哪些语句关于Java内存回收的说明是正确的?                        (     )

A、程序员必须创建一个线程来释放内存

B、内存回收程序负责释放无用内存

内存释放由程序自动

C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定的时间释放内存对象

有以下程序片段,下列哪个选项不能插入到行1。                       (       )

1.

2 .public  class  Interesting{

3. //do sth  

4.}

A、import java.awt.*;                          B、package mypackage;        

C、class OtherClass{   }                   D、public class MyClass{ }

每个编译单元(文件)只能有一个public类。这么做的意思是,每个编译单元只能有一个公开的接口,而这个接口就由其public类来表示

设有下面两个赋值语句:

         a = Integer.parseInt(“12”);

         b = Integer.valueOf(“12”).intValue();此方法返回该对象转换为int类型后表示的数值。

Integer.parseInt()返回一个原子类型INT。Integer.valueOf(),返回的是封装的整数对象。

     下述说法正确的是(     )。

A、a是整数类型变量,b是整数类对象。

B、a是整数类对象,b是整数类型变量。

C、a和b都是整数类对象并且值相等。  

D、a和b都是整数类型变量并且值相等。

17.在使用interface声明一个接口时,只可以使用下面哪个修饰符修饰该接口。  (     )

A.private     B.protected  C.private    D.public

void的含义:                                                      (  )

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

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

return语句:                                                       (  )

A.只能让方法返回数值  B.方法都必须含有

C.方法中可以有多句return         D.不能用来返回对象

处在if中就可以有

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

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

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

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

D.以上都不对

 下列说法哪个正确?

A.不需要定义类,就能创建对象

B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象

D、属性必须是简单变量

java中属性的定义规则,是指set/get方法名去掉set/get后,将剩余部分首字母小写后,得到的字符串就是这个类的属性。

关于方法main()的说法哪个正确?(  )

A.方法main()只能放在公共类中

B  main()的头定义可以根据情况任意更改

C.一个类中可以没有main()方法

D.所有对象的创建都必须放在main()方法中

构造函数何时被调用?  (  )

A、创建对象时                                    B、类定义时

C、使用对象的方法时                                      D、使用对象的属性时

其是应该说是实例化对象时被调用,一个类的创建会默认有一个无参构造方法,当你实例化的时候(new Object())会被调用

 抽象方法:  (  )

A、可以有方法体

B、可以出现在非抽象类中

C、是没有方法体的方法

D、抽象类中的方法都是抽象方法 

关于构造函数的说法哪个正确?  (  )

A、一个类只能有一个构造函数

B、一个类可以有多个不同名的构造函数

C、构造函数与类同名

D、构造函数必须自己定义,不能使用父类的构造函数

构造函数必须与类同名,而且不能有返回类型。

重写与重载的关系是  (  )

A、重写只有发生在父类与子类之间,而重载可以发生在同一个类中

B.重写方法可以不同名,而重载方法必须同名

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

D.重写与重载是同一回事

重载

类里面的方法名相同,参数和返回类型不同

    参数:不同

    返回类型: 可以相同

    异常: 可以修改

访问限制: 可以修改

       重写

继承父类之后重写父类的方法

           参数:相同

           返回类型: 相同

           异常: 可以减少,不可以增加

           访问限制: 可以降低,不可以上升

异常包含下列哪些内容?  (  )

A.程序执行过程中遇到的事先没有预料到的情况

B.程序中的语法错误  

C.程序的编译错误

D.以上都是

以下哪个不是Java的原始数据类型(      )

A、int    B、Boolean    C、float  D、char

java原始数据类型有short、byte、int、long、boolean、char、float、double

而大写开头的是一种引用类型

若需要定义一个类方法,应使用哪种修饰符?(     )

A、static B、package    C、private        D、public

给出下面代码,关于该程序以下哪个说法是正确的?(     )

public class Person{

static int arr[] = new int[5];

public static void main(String args[])

{

  System.out.println(arr[0]); }

}

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

C、输出零            D、输出空

在使用interface声明一个接口时,只可以使用下面哪个修饰符修饰该接口。(     )

A、private      B、protected  C、private  D、public

如下哪个是Java中的标识符(    )

A、fieldname    B、super         C、3number        D、#number

关于选择结构下列哪个说法正确? (  )

A.if语句和 else语句必须成对出现

B.if语句可以没有else语句对应

C.switch结构中每个case语句中必须用break语句

D.switch结构中必须有default语句

while循环和 do…while循环的区别是:  (  )

A.没有区别,这两个结构任何情况下效果一样

B.while循环比 do…while循环执行效率高

C.while循环是先循环后判断,所以循环体至少被执行一次

D.do…while循环是先循环后判断,所以循环体至少被执行一次

下列修饰符中与访问控制无关的是 (  )

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

修饰类

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

修饰方法

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。

修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

 void的含义:  (  )

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

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

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

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

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

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

D.以上都不对

下列说法哪个正确?

A.不需要定义类,就能创建对象

B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象

D、属性必须是简单变量

下列说法哪个正确?  (  )

A、一个程序可以包含多个源文件

B、一个源文件中只能有一个类

C、一个源文件中可以有多个公共类(1个)

D、一个源文件只能供一个程序使用

关于继承的说法正确的是:  (  )

A、子类将继承父类所有的属性和方法。

B、子类将继承父类的非私有属性和方法。

C、子类只继承父类public方法和属性

D、子类只继承父类的方法,而不继承属性

关于构造函数的说法哪个正确?  (  )

A、一个类只能有一个构造函数

B、一个类可以有多个不同名的构造函数

C、构造函数与类同名

D、构造函数必须自己定义,不能使用父类的构造函数

关于接口哪个正确?  (  )

A、实现一个接口必须实现接口的所有方法

B.一个类只能实现一个接口

C.接口间不能有继承关系

D.接口和抽象类是同一回事

对于已经被定义过可能抛出异常的语句,在编程时:  (  )

A、必须使用try/catch语句处理异常,或用throw将其抛出

B.如果程序错误,必须使用 try/catch语句处理异常

C.可以置之不理

D.只能使用try/catch语句处理

 字符流与字节流的区别在于(  )

A.前者带有缓冲,后者没有

B.前者是块读写,后者是字节读写

C. 二者没有区别,可以互换使用

D. 每次读写的字节数不同

字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。

字节流默认不使用缓冲区;字符流使用缓冲区。

字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元

下列流中哪个不属于字节流  (  )

A.FileInputStream

B.BufferedInputStream

C. FilterInputStream     

D. InputStreamReader

下列哪个是JDK提供的编译器?

A.java.exe      B.javac.exe   C.javaap.exe             D.javaw.exe

下列描述中不正确的一项是                                            (     )

A、import语句告诉Java用户需要哪个包(package!)中的类

B、所有的类必须实例化,才能调用它的数据成员和方法

C、package语句用于将源文件存入所指定的包中

D、System类不可能实例化,它的所有方法都是通过类变量来调用的

不用实例化也能调用

下面哪个函数是public void example( ){...}的重载函数?                (    )

A、public void example( ){...}           B、public void example( int m ){...}

C、public void example2( ){...}          D、public int example ( ){...}

重载方法名不变,其他的都可以改

为了区分重载多态中同名的不同方法,要求                                (    )

A、形式参数个数或者类型不同             B、返回值类型不同

C、调用时用类名或对象名做前缀           D、形式参数名称不同(自己定义)

设 h、m、n 为类 x 中定义的 int 型变量,下列类 x 的构造函数中不正确的是(    )。

A、 x( int m){ ... }                            B、 void x( int m){ ... }

C、 x( int m, int n){ ... }                 D、 x( int h,int m,int n){ ... }

下列说法中,正确的一个是                                              (    )

A、类成员变量在使用之前可以不初始化     B、局部变最在使用之前可以不初始化

C、参数变量在使用之前必须初始化         D、所有的变量在使用之前必须初始化

下列哪个叙述是错误的? 接口中不能声明变量。接口中不能定义非抽象方法。接口中的常量可以不指定初值。可以在接口中只声明常量,不声明抽象方法。

接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象

下列哪个叙述是正确的?

A.创建File对象可能发生异常。

B.BufferedReader流可以指向FileInputStream流。

C.BufferedWrite流可以指向FileWrite。

D.RandomAccessFile流一旦指向文件,就会刷新该文件。

为了向文件hello.txt尾加数据,下列哪个是正确创建指向hello.txt的流?

A.try{ OutputStream out=new FileOutputStream(“hello.txt”);}

catch(IOException e) { }

B.try{ OutputStream out=new FileOutputStream(“hello.txt”,true);}

catch(IOException e) { }

C.try{ OutputStream out=new FileOutputStream(“hello.txt”,false);}

catch(IOException e) { }

D.try{ OutputStream out=new OutputStream(“hello.txt”,true);}

catch(IOException e) { }

下列哪个叙述是不正确的? 一个应用程序中最多只能有一个窗口。JFrame创建的窗口默认是不可见的。不可以向JFrame窗口中添加JFrame窗口。窗口可以调用setTitle(String s)方法设置窗口的标题。下列哪个叙述是正确的? 接口中不能声明变量。接口中不能定义非抽象方法。接口中的常量可以不指定初值。可以在接口中只声明常量,不声明抽象方法。 下列哪个叙述是正确的? 一个类最多可以实现2个接口。如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法。如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法。允许接口中只有一个抽象方法。

Java用标识符(identifier)  表示变量名、类名和方法名,以下关于标识符错误的是( C  ) 标识符可以由字母、数字和下划线(_)、美元符号($)组合而成标识符可以由编程者自由指定转义符也是标识符的一种,用来表示一些有特殊含义的字符标识符必须以字母、下划线或美元符号开头,不能以数字开头

标识符是赋予变量,类和方法等的名称。标识符由编程者自己制定,但是要遵守一定的语法规范

转义符是指一些特殊含义的,很难用一般方式表达的字符,如回车,换行符

下列不是Java关键字的是(   C   )。

 A、 final       B、 finally       C、null     D、sizeof

下面哪个语句正确地声明一个整型的二维数组? ( D     )

A、 int a[][] = new int[][]; 没大小

B、 int a[100][100] = new int[][]; 实例化反了

C、 int []a[] = new int[100][100]; 语法错误

D、 int a[][] = new int[100][100];

为AB类的一个无形式参数且无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它(即可以通过类名调用方法method),该方法头的形式为( D     )。

A、abstract  void  method( )        B、final  void  method( )     

C、public  void  method( )        D、static  void  method( )

给出如下代码:

class Test{

private int m;

  public static void fun() {

    // some code...

  }

}

如何使成员变量m 被函数fun()直接访问? (   C   )

A、将private int m 改为protected int m

B、将private int m 改为public int m

C、将private int m 改为 static int m

D、将private int m 改为 int m

 由于 m现在是私有变量不可被访问,需要将他变成友好或者公共的,加上需要直接访问,则需要将其变为静态

欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?( B  )

A、 ArrayList myList=new Object( );   B、 List myList=new ArrayList( );

C、 ArrayList myList=new List( );     D、 List myList=new List( );

上转型变量

下面( B    )函数是public void example( ){...}的重载函数?

A、public void example( ){...}

B、public void example( int m ){...}

C、public void example2( ){...}

D、public int example ( ){...}

有程序片段如下,以下表示式的结果为true的是( B    )。

Float  s=new  Float(0.1f);

Float  t=new  Float(0.1f);

Double  u=new  Double(0.1);

A、s==t                        B、s.equals(t)

C、u.equals(s)                  D、t.equals(u)

Java中==和equal的区别为:

1、== 表示 判断2个变量或对象实例是否指向同一个内存空间,equals()表示 判断2个变量或对象实例所指向的内存空间的值是否相同。

2、== 表示 对内存地址进行比较,equals()表示 对字符串的内容进行比较。

3、== 表示引用是否相同,equals() 表示值是否相同。

下列代码的执行结果是: ( C     )。

public class Test5{

  public static void main(String args[]){

     String s1=new String("hello");

     String s2="hello";

     System.out.print(s1==s2);

System.out.print(",");

     System.out.println(s1.equals(s2));

  }

}

String s1=new String("hello");指向的是堆地址,而str2指向的是字符串常量地址

如下图

 

A、true,false                       B、true,true

C、false,true                       D、false,false

str指向在常量池中的字符串"hello",在编译期就已经确定;str2指向堆上的对象,是在运行期创建,而堆中实际存放的字符串还是常量池中"hello",即value属性还是指向常量池中的字符串;

String str2 = new String(“hello”);首先会在堆内存中申请一块内存存储对象内容,同时还会检查字符串常量池中是否含有"hello"字符串,若没有则添加"hello"到字符串常量池中,同时把常量池中的地址放到堆内存中;若有,则直接去常量池中的字符串内存地址即可;然后在栈中创建一个引用str2指向其堆内存块对象。(此过程中可能会创建两个对象,也可能就一个)

Java中 String str = new String("hello");的底层实现_黄亚的博客-CSDN博客_java new string

已知如下代码:

public class Test{

public static void main ( String arg[] )

{

      long a[] = new long[6];

System.out.println ( a[6] );

}

}

请问哪个语句是正确的? ( D  )

A、程序输出 null               B、 程序输出 0 

C、因为long[]数组声明不正确,程序不能被编译

D、程序被编译,但在运行时将抛出一个ArrayIndexOutOfBoundsException异常

在Java中打印Array数组的方法,这里主要总结了有四种:

(1)通过循环打印数组

(2)使用 Arrays.toString() 打印

(3)使用 JDK 8 的 java.util.Arrays.stream() 打印

(4)使用 Arrays.deepToString() 方法打印。如果数组中有其它数组,即多维数组,也会用同样的方法深度显示

关于异常的含义,下列描述中最正确的一个是( C    )。

A、程序编译错误                  B、程序语法错误

C、程序运行时的错误              D、程序编译和运行时发生的错误

以下有关构造函数的说法,正确的是:( A    )。

A、一个类的构造函数可以有多个

B、构造函数在类定义时被调用

C、构造函数只能由对象中的其它方法调用

D、构造函数可以和类同名,也可以和类名不同

设 i、j、k 为类 x 中定义的 int 型变量,下列类 x 的构造函数中不正确的是( B  )。

A、 x( int m){ ... }             B、 void x( int m){ ... }

C、 x( int m, int n){ ... }      D、 x( int h,int m,int n){ ... }

构造函数代表的函数子函数可能会有返回值,一个构造方法一旦加了void,那么这个就不是构造方法了,变成了一个普通的方法。

以下有关类的继承的说明中正确的是:(  D    )

A、子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性

B、子类只能继承父类的方法,不能继承父类的属性

C、子类只能继承父类的非私有属性,不能继承父类的方法

D、子类不能继承父类的私有属性

关于构造方法,下列说法错误的是(A  )

A、构造方法不可以进行方法重载

B、构造方法用来初始化该类的一个新的对象

C、构造方法具有和类名相同的名称

D、构造方法不返回任何数据类型

下列语句序列执行后,i 的值是( D  )。

int i=8, j=16;

if( i-1 > j ) i--; else j--;

A、 15  

B、 16

C、 7

D、 8

不满足if的条件就没有i--

以下由 for 语句构成的循环执行的次数是(  B )。

for ( int i = 0; true ; i++) ;

A、 有语法错,不能执行 

B、 无限次

C、 执行1次

D、 一次也不执行

下列数组定义及赋值,错误的是(C  )

A.  int  Array[];                   

B.  int a[]={1,2,3,4,5};

C.  int  Array=new int[3];

D.  int[][] a=new int[2][];     

     int  Array[1]=1;

     a[0]=new int[3];

     int  Array[2]=2;

     a[1]=new int[3];

     int  Array[3]=3;

下列程序输出结果为:   ( C )

public class test {

    public static void main(String args[]) {

       int a = 0;

       outer: for (int i = 0; i < 2; i++) {

              for (int j = 0; j < 2; j++) {

               if (j > i) continue outer;

                a++;

              }

            }

       System.out.println(a);

    }

A、0           B、2       C、3          D、4

一般的Java源程序文件由以下三部分组成,下列哪个选项不是( B )

 A、package语句(0句或1句)           B、接口定义语句(1个或多个接口定义)

 C、import语句(0句或多句)            D、类定义(1个或多个类定义) 

定义类头时能使用的修饰符是( C    )。

A、private  

B、 static

C、abstract

D、 protected

下列语句序列执行后,k 的值是(  C    )。

int i=10, j=18, k=30;

switch( j - i )

{  case 8 : k++;

   case 9 : k+=2;

   case 10: k+=3;

   default : k/=j;

}

   A、 31          B、32          C、2           D、33

没有break直接全部执行

关于以下程序段的说明正确的是 (  C    )

public class ArrayTest {

  public static void main(String args[]) {

    try {

         int x[]=new int[-5];

         System.out.println("此行将无法被执行!");

    } catch(NegativeArraySizeException e) {

       System.out.println("exception: 数组下标不能为负数。");

    }

  }

}

A、编译通过,输出:

B、编译通过,输出:

       此行将无法被执行!

     此行将无法被执行!

     exception: 数组下标不能为负数。

C、编译通过,输出:

D、编译不能通过

      exception: 数组下标不能为负数。

在浏览器中执行applet 程序,以下选项中的(  A   )方法将被最先执行。

A、init()         B、start()         C、destroy()       D、stop()

下面哪个方法与applet的显示无关? (  B   ) update()     B、draw()         C、repaint()          D、paint()

它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。

用于定义类成员的访问控制权的一组关键字是( D   )。

A、 class, float, double, public        B、 float, boolean, int, long

C、 char, extends, float, double        D、 public, private, protected

在使用interface声明一个接口时,只可以使用( D    )修饰符修饰该接口。

A、private                      B、protected 

C、private  protected            D、public

一个类要具备( C     )才可以序列化。

A、继承ObjectStream类            B、具有带参数构造方法

C、实现Serializable接口          D、定义了WriteObject方法

指出下列程序运行的结果 ( B   )

public class Example{

  String str=new String("good");

  char[] ch={'a','b','c'};

  public static void main(String args[]){

    Example ex=new Example();

    ex.change(ex.str,ex.ch);

    System.out.print(ex.str+" and ");

    Sytem.out.print(ex.ch);

  }

  public void change(String str, char ch[]){

    str="test ok";

    ch[0]='g';

  }

}

good and abc    B、 good and gbc    C、test ok and abc    D、 test ok and gbc 给出如下初始化语句

String s1=new String(“Hello”);

String s2=new String(“there”);

String s3=new String();

以下哪种操作是合法的? (   A   )

A、 s3=s1+s2;                B、 s3=s1-s2;

C、 s3=s1&s2;                D、 s3=s1&&s2;

MAX_LENGTH是int型public成员变量, 变量值保持为常量100,用简短语句定义这个变量。(D )

A、 public int MAX_LENGTH=100;

B、 final int MAX_LENGTH=100;  

C、 final public int MAX_LENGTH=100;

D、 public final int MAX_LENGTH=100;

下列方法中可以用来创建一个新线程的是( C     )。

A、 实现java.lang.Runnable 接口并重写 start()方法

B、 实现java.lang.Runnable 接口并重写 run()方法

C、 继承java.lang.Thread 类并重写 run()方法

D、 实现java.lang.Thread 类并实现 start()方法

解析:接口Runnable定义了run()方法;而Thread类本身也实现了Runnable接口,故创建线程有两种方法:

1、用实现Runnable接口的类的实例作参数生成Thread类的实例

2、编写继承Thread类的类,并重写(override)run()方法

故答案为C。

给出下面代码段   

1)

public class Test {

  2)

int m, n;

  3)

public Test() {}

  4)

public Test(int a) { m=a; }

  5)

public static void main(String arg[]) {

  6)

Test t1,t2;

  7)

int j,k;

  8)

j=0; k=0;

  9)

t1=new Test() ;

10)

t2=new Test(j, k) ;

11)

}

12)

}

哪行将引起一个编译时错误? (D    )

A、 line 3         B、 line 5         C、 line 6         D、 line 10

只能传一个值

哪个关键字可以抛出异常? ( C  )

A、 transient      B、 finally       C、throw       D、 static

在Java语言中执行如下语句  int i=10;int j=++i; ,i和j的值分别为(A   )

A、  11和11                  B、  10和10

C、  10和11                  D、  11和10

Java语言和c++语言相比,哪一项是Java有的,而c++没有?( D  )

A、面向对象       B、动态链接        C、有类库         D、跨平台

阅读下列代码段,选出该代码段的所在文件的正确文件名( D  )。

  class A{

      void methodl(){

        System.out.println(”methodl in class A”):

    }

    }

    public class B{

       void method2(){

               System.out.println(”method2 in class B”):

}

       public static void main(String args[]){

               System.out.println(”main()in class B”):

      }

    }

A、A .java           B、A.class           C、B.class             D、B.java

下列描述中不正确的一项是(  B )。

A、import语句告诉Java用户需要哪个包(package!)中的类

B、所有的类必须实例化,才能调用它的数据成员和方法

C、package语句用于将源文件存入所指定的包中

D、System类不可能实例化,它的所有方法都是通过类变量来调用的

为了区分重载多态中同名的不同方法,要求( A  )。

A、形式参数个数或者类型不同             B、返回值类型不同

C、调用时用类名或对象名做前缀           D、形式参数名称不同(自己定义)

下列关于 long类型的说法中,正确的一项是(  C  )。

A、long类型占存储空间和int类型一样大     B、long类型能表示的数值范围和int类型一样

C、long类型不能自动转换为int类型         D、常数Long.MIN_VALUE代表整型的最小值

下列说法中,正确的一个是( D  )。

A、类成员变量在使用之前可以不初始化     B、局部变最在使用之前可以不初始化

C、参数变量在使用之前必须初始化         D、所有的变量在使用之前必须初始化

Java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义:

所有的变量必须先声明、后使用。

指定类型的变量只能接受类型与之匹配的值。

执行下列代码段之后,输出的结果为(    )。

public class exl8{

public static void main(String[]args){

int x=5,y=5; double c=10;

c%=(++x)*y;

System.out.println(c);

    }

  }

     A、15.0               B、10.0               C、5.0                 D、10.0

运算符  /  :除法运算符,并且运算结果遵从向下取整。

运算符 % :模运算,

      (1)、当运算符左边小于右边,结果就等于左边;

      (2)、当运算符左边大于右边,就和算术中的取余是一样的效果。

下列代码执行之后,输出的结果为( C  )。

 public class exl9{

    public static void main(String[] args) {

       int x=12,y=13,m=11;

         int temp=x>y?x:y;

         temp=temp>m?temp:m;

         System.out.println(temp);

     }

}

A、11              B、12                 C、13                 D、1

算术表达式10*10/6*6的值为(  D  )。

A、3                 B、2                  C、60                 D、96

执行下列代码段后,输出的结果为(D   )。(注意:215=32768)

    public class ex34{

       public static void main(String[]args){

       int mm = 32767;

       short tt = (short) (++mm);

       System.out.println(tt);

        }

     }

A、32767             B、32768             C、-32767          D、-32768

基本类型:byte 二进制位数:8bit(1字节)基本类型:short 二进制位数:16 bit(2字节)

最小值:Short.MIN_VALUE=-32768最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32 bit(4字节)基本类型:long 二进制位数:64 bit(8字节)基本类型:float 二进制位数:32 bit(4字节)基本类型:double 二进制位数:64 bit(8字节)基本类型:char 二进制位数:16 bit(2字节)

下列程序执行之后,将会输出( D  )。

public class ex4{

public static void main(String[  ]args){

       int j = 0;

       for (int i = 3; i > 0; i--) {

           j += i;

           System.out.print(j);

       }

}

}

A、4                 B、6                 C、34                  D、356

下列语句序列执行后,j的值是( C  )。

public class Main {

        public static void main(String[] args) {   

       int j = 2, i = 5;

       while (j < i--)

           j++;

       System.out.println(j);      

        }

}

A、2                   B、3                 C、4                   D、5

下列程序中的循环体将会被执行( D  )。

 public class Main {

    public static void main(String[] args) {

       int x = 3;

       do {

           System.out.println("Hello!");

           x--;

       } while (x >= 0);

    }

}

A、1次                  B、2次              C、3次              D、4次

下面哪一项的方法调用能填入程序中的横线处?( C    )

 public class Main {

    public static void main(String[] args) {

       Main e = new Main();

       e.method();

    }

    public void method() {

       CC9 c1 = new CC9();

       CC9_1 c2 = new CC9_1();

                            

                            

    }

}

class CC9 {

    static void method() {

       System.out.println("in CC9");

    }

}

class CC9_1 {

    void method() {

       System.out.println("in CC9_1");

    }

}

A、 c1.method( );      B、CC9.method(  );    C、CC9.method( );   D、c1.method( );

     c2.method( );         CC9_1.method(  );     c2.method( );        CC9_l.method( );

已知定义:int a[ ]={1,2,3,4,5,6,7,8,9,10}; ,为了打印输出数组a的最后一个元素,下面正确的代码是(   )。

A、System.out.println(a[10]);

B、System.out.println(a(9));

C、System.out.println(a[a.1ength]);              

D、System.Out.println(a[a.1ength-1]);

编译并运行下面程序(命令:java exl0 1),关于运行结果的描述以下哪个选项是正确的?( D  )

public class exl0 {

    public static void main(String[] args) {

       int i = 0;

       try {

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

       } catch (Exception e) {

       }

       switch (i) {

       case 0:

           System.out.print("0");

       case 1:

           System.out.print("1");

       default:

           System.out.print("default");

       }

    }

}

  A、打印"0"          B、打印出"1"      

  C、打印出"default"         D、打印出"1default"

下列关于抛出异常的描述中,错误的一项是( D  )。

A、任何从Throwable派生的类都可以用throw语句抛出

B、 Exception和Error是Throwable的直接派生类

C、异常抛出点后的代码在抛出异常后不再执行

D、Exception代表系统严重错误,一般程序不处理这类错误

下列关于抛出异常的描述中,错误的一项是(C   )。

A、异常可以由try代码段中的语句抛出

B、异常可以从被try代码段中调用的方法中抛出

C、异常的抛出并不影响代码段的执行顺序

D、异常还可能产生于数组下标越界及Java虚拟机内部的错误等

关于对下列代码段的描述,正确的一项是( D  )。

catch(Exception e){

System.out.println(“An exception was thrown”);

    throw e;

}

程序终止

         B、编译出错       C、该异常不会被处理    

D、该异常会继续被上层处理

下列描述中,正确的一项是( D  )。

A、异常机制可以用于流程控制

B、finally代码段在发生异常时不一定必须执行

C、在catch代码段中可以使用return语句来返回到异常抛出点

D、可以把catch到的异常对象再次抛出,使上层try—catch结构继续处理该异常事件

下说法中错误的一项是(  )。

A、线程一旦创建,则立即自动进行

B、程创建后需要调用start()方法,将线程置于可运行状态

C、调用线程的start()方法后,线程也不一定能立即执行

D、线程处于可运行状态,意味着它可以被调度

线程开始运行时,是从下列哪一个方法开始执行的(   )

A、main()         B、start()         C、run()          D、init()

下列程序的执行结果是( B  )

public class ex {

    public static void main(String[] args) {

       T1 t = new T1();

       t.start();

    }

}

class T1 extends Thread {

    public void run() {

       int a = 0;

       do {

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

           a++;

       } while (a < 3);

    }

}

A、 1 2 3           B、0  1  2          C、0  0  0        D、1  1  1

下列关于线程优先级的说法中,错误的一项是(   )。

 A、MIN_PRIORITY代表最低优先级         B、MAX_PRIORITY代表最高优先级

 C、NOR_PRIORITY代表普通优先级        D、代表优先级的常数值越大优先级越低

下列哪一项不属于Swing布局管理器?(   )

A、GridLayout         B、CardLayout       C、BorderLayout       D、BoxLayout

下列说法中,错误的一项是(  )。

A、在Java中,若要处理某类事件,必须定义相关的事件处理类

B、在对事件源实例化之后,要注册相应事件的监听器

C、事件处理类必须实现与该类事件相对应的监听器接口

D、事件源通常是一个构件,也称做监听器

如果有一个对象 myListener ( 其中 myListener 对象实现了 ActionListener 接口 ), 下列( C )语句使得 myListener 对象能够接受处理来自于 smallButton 按钮对象的动作事件 ?

A.  smallButton.add(myListener);

B.  smallButton.addListener(myListener);

C.  smallButton.addActionListener(myListener);

D.  smallButton.addItem(myListener);

二.程序阅读题 以下程序的输出结果为________相等_________。

class StringTest1

{

       public static void main(String args[])

       {

              String s1="hello";

              String s2=new String("hello");

              if(s1.equals(s2)){

                     System.out.println("相等");

              }else{

                     System.out.println("不相等");

              }     }  }

应用程序的main方法中有以下语句,则输出的结果是        10        。

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

        int sum=0;

        for(int i=0; i

      if(x[i] < min)

             min = x[i];

}

System.out.println(min);

应用程序的main方法中有以下语句,则输出的结果是     0        。

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

        int sum=0;

        for(int i=0;i

      if(x[i]> max)

             max =x[i];

}

System.out.println(max);

程序Test.java编译运行后输出的结果是_________java2________。

public class Test {

    String s1="java"; 

    public static void main(String args[]) {                 

        int z=2;             

        Test t=new Test();             

        System.out.println(t.s1+z);

    } 

阅读以下程序,写出输出结果_____ Animal ______ Dog______________。

class  Animal {

  Animal() {

    System.out.print ("Animal  ");  }

}

public 

class  Dog  extends  Animal {

 Dog() {

    System.out.print ("Dog ");  }

  public static void main(String[] args) {

    Dog  snoppy= new  Dog();  }

}

class A4{

       public int getNumber(int a){

              return a+1;

       }

}

public class ABC extends A4{

       public int getNumber(int a){

              return a+100;

       }

       public static void main(String[] args) {

              A4 a=new A4();

              System.out.println(a.getNumber(10));

               a=new ABC();

               System.out.println(a.getNumber(10));

       }

}

11

110

public class E1 {

       public static void main(String[] args) {

              char c='\0';

              for(int i=1;i

                     case 1: c='J';

                     System.out.print(c);

                     case 2:c='e';

                     System.out.print(c);

                     break;

                     case 3:c='p';

                     System.out.print(c);

                     default:System.out.print("好");

                     }

              }     }

}

Jeep好好

class B {

int x=100,y=200;

public void setX(int x){

       x=x;

}

public void setY(int y){

       this.y=y;

}

public int getXYSum(){

              return x+y;

}}

public class A1{

       public static void main(String args[]){

              B b=new B();

              b.setX(-100);

              b.setY(-200);

              System.out.print("sum="+b.getXYSum());

       }}

sum=-100

public class E {

       public static void main(String[] args) {

              char x='你',y='e',z='吃';

              if(x>'A'){

                     y='苹';

                     z='果';

              }

              else

                     y='酸';

              z='甜';

              System.out.print(x+"'"+y+"'"+z);

              }

}

你'苹'甜

import java.io.IOException;

public class E {

   public static void main(String args[]){

          try{methodA();

               }

          catch (IOException e){

                 System.out.print("你好");

                 return;

          }

          finally{

                 System.out.print("fine thanks");

          }

   }

   public static void methodA() throws IOException{

          throw new IOException();

   }}

你好fine thanks

class A5{

       int m;

       int getM(){

              return m;

       }

       int seeM(){

              return  m;

       }

}

class B4 extends A5{

       int m;

       int getM(){

              return m+100;

       }

}

public class E {

public static void main(String args[]){

       B4 b=new B4();

       b.m=20;

       System.out.println(b.getM());

       A5 a=b;

       a.m=-100;

       System.out.println(a.getM());

       System.out.println(b.seeM());

       System.out.println(b.m);

}

}

120

120

-100

20

class E4 {

double f(int x,double y){

       return x+y;

}

   int f(int x,int y){

         return x*y;

  }

}

public class E5{

       public static void main(String args[]){

              E4 b=new E4();

              System.out.println(b.f(10,10));

              System.out.println(b.f(10,10.0));         

       }

}

100

20.0

六.编程题 创建一注册窗口类,运行结果图如下,并写一监视器类,使用对象输出流将注册的用户对象写入磁盘文件,并创建对象输入流读入磁盘文件对象,在控制台输出。

例1:

package com.company;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import java.util.HashMap;

//上面可以不背

//1. 创建一注册窗口类,运行结果图如下,并写一监视器类,使用对象输出流将注册的用户对象写入磁盘文件,

//        并创建对象输入流读入磁盘文件对象,在控制台输出。

public class Demo1 extends JFrame {

    public static void main(String[]args){

        Demo1 demo1= new Demo1();

        demo1.init();

    }

    JLabel j1 = new JLabel("用户名");

    JLabel j2 = new JLabel("密码");

    JTextField jf1 = new JTextField();

    JTextField jf2 = new JTextField();

    JButton button1 = new JButton("保存");

    JButton button2 = new JButton("取消");

    void init() {

        setLayout(new FlowLayout());

        Box vbox = Box.createVerticalBox();

        Box box1 = Box.createHorizontalBox();

        box1.add(j1);

        box1.add(jf1);

        Box box2 = Box.createHorizontalBox();

        box2.add(j2);

        box2.add(jf2);

        Box box3 = Box.createHorizontalBox();

        box3.add(button1);

        box3.add(button2);

        vbox.add(box1);

        vbox.add(box2);

        vbox.add(box3);

        this.add(vbox);

        MyListener myListener = new MyListener();

        button1.addActionListener(myListener);

        this.setVisible(true);

        this.pack();

    }

    class MyListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            String user = jf1.getText();

            String password = jf2.getText();

            Person person = new Person();

            person.setName(user);

            person.setPassword(password);

            try {

                HashMap map = new HashMap();

                map.put(user, password);

                FileOutputStream outStream = new FileOutputStream("info.txt");

                ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);

                objectOutputStream.writeObject(map);

                outStream.close();

                System.out.println("successful");

            } catch (Exception w) {

                w.getMessage();

            }

            try {

                FileInputStream freader = new FileInputStream("info.txt");

                ObjectInputStream objectInputStream = new ObjectInputStream(freader);

                HashMap map;

                map = (HashMap) objectInputStream.readObject();

                System.out.println("用户名:" + user);

                System.out.println("密码:" + map.get(user));  //通过用户名在哈希表中查询密码

            } catch (Exception h) {

                h.printStackTrace();

            }

        }

    }

}

class Person{

    String name;

    String password;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

}

设有一文本文件english.txt的内容如下:

设计一程序按行读取该文件内容,并在该行的后面尾加上该英语句子中含有的单词书目,然后再将该行写入到一个名字为englishCountt.txt的文件中,并将该文件输出如下:

englishCount.txt内容:

The arrow missed the target. 句子中单词个数:5

They rejected the union demand. 句子中单词个数:5

Where does this road go to? 句子中单词个数:6

Where does this road go to? 句子中单词个数:6

例2:

package com.company;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

import java.util.StringTokenizer;

// 通过Scanner类按行读出内容并写入可变长数组中

// 并创建字节流写入enlishCountt.txt中

public class Demo2 {

    public static void main(String[] args) {

        File file = new File("src\\english.txt");

        Scanner sc = null;

        List array = new ArrayList();

        try {

            sc = new Scanner(file);

            while (sc.hasNextLine()) {

                array.add(sc.nextLine());

            }

        } catch (FileNotFoundException e) {

            System.out.println("error:" + e);

        }

        String sum = "";

        for (int i = 0; i < array.size(); i++) {

            String str = array.get(i);

            StringTokenizer anaylsis = new StringTokenizer(str, " ?.");

            int number = anaylsis.countTokens();

            sum = sum + str + " 句子中单词个数: " + number + "\n";

        }

        file = new File("src\\englishCountt.txt");

        try {

            FileOutputStream out = new FileOutputStream(file);

            out.write(sum.getBytes());

            out.close();

        }catch (IOException e){

            System.out.println("error"+e);

        }

    }

}

4. 编写GUI程序。首先编写一个封装学生信息的类,然后再编写一个窗口。

要求窗口使用三文本框和一个文本区为学生对象中的数据提供视图,其中三个文本框用来显示和更新学生对象的姓名、数学成绩和英语;文本区对象用来显示学生的姓名和总成绩。

窗口中有一个按钮,用户单击该按钮后,程序用3个文本框中的数据分别作为学生对象的姓名、数学成绩底和英语成绩,并将学生的姓名和总成绩显示在文本区中。

例4:

package com.company;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Demo4 {

    public static void main(String[] args) {

        Demo4_1 demo = new Demo4_1(300,200,500,300);

    }

}

class Student {

    String name;

    int mathGrade;

    int englishGrade;

    int sumGrade;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getMathGrade() {

        return mathGrade;

    }

    public void setMathGrade(int mathGrade) {

        this.mathGrade = mathGrade;

    }

    public int getEnglishGrade() {

        return englishGrade;

    }

    public void setEnglishGrade(int englishGrade) {

        this.englishGrade = englishGrade;

    }

    public int getSumGrade() {

        sumGrade = mathGrade + englishGrade;

        return sumGrade;

    }

}

class Demo4_1 extends JFrame {

    JTextField tName;

    JTextField tMath;

    JTextField tEnglish;

    JTextArea textArea;

    JButton btn;

    MyListener myListener = new MyListener();

    public Demo4_1(int x,int y,int width,int height){

        init();

        setBounds(x,y,width,height);

        setVisible(true);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void init(){

        tName = new JTextField(10);

        tMath = new JTextField(10);

        tEnglish = new JTextField(10);

        textArea = new JTextArea(5,20);

        btn = new JButton("确定");

        setLayout(new FlowLayout());

        Box box1 = Box.createHorizontalBox();

        box1.add(new JLabel("姓名:"));

        box1.add(tName);

        Box box2 = Box.createHorizontalBox();

        box2.add(new JLabel("数学成绩:"));

        box2.add(tMath);

        Box box3 = Box.createHorizontalBox();

        box3.add(new JLabel("英语成绩:"));

        box3.add(tEnglish);

        Box vBox = Box.createVerticalBox();

        vBox.add(box1);

        vBox.add(box2);

        vBox.add(box3);

        vBox.add(textArea);

        textArea.setEnabled(false);

        vBox.add(btn);

        add(vBox);

        myListener.setView(this);

        btn.addActionListener(myListener);

    }

}

class MyListener implements ActionListener {

    Demo4_1 view;

    public void setView(Demo4_1 view) {

        this.view = view;

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        String name = view.tName.getText();

        String math = view.tMath.getText();

        String eng = view.tEnglish.getText();

        String regex = "[^0-9]*";

        if (name.equals("")||math.matches(regex)||eng.matches(regex)) {

            view.textArea.setText("error");

            return;

        }

        Student student = new Student();

        student.setName(name);

        student.setMathGrade(Integer.parseInt(math));

        student.setEnglishGrade(Integer.parseInt(eng));

        view.textArea.setText("");

        view.textArea.append("姓名:"+student.getName()+"\n");

        view.textArea.append("总成绩:"+student.getSumGrade()+"\n");

    }

}

5. 使用Scanner类的实例解析一个文件中的价格数据,并计算平均价格,比如该文件的内容如下:

商品列表:

电视机,2567元/台

洗衣机,3562元/台

冰箱,6573元/台

例5:

package com.company;

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

public class Demo5 {

    public static void main(String[] args) {

        File file = new File("src\\goods.txt");

        Scanner sc = null;

        String regex = "[^0-9.]+";

        int count = 0;

        double sum = 0;

        try {

            double price = 0;

            sc = new Scanner(file);

            sc.useDelimiter(regex);

            while(sc.hasNextDouble()) {

                price = sc.nextDouble();

                count++;

                sum += price;

                System.out.println(price);

            }

            double aver = sum / count;

            System.out.println("平均价格:" + aver);

        } catch (FileNotFoundException e) {

            System.out.println("error:" + e);

        }

    }

}

6. 设计程序计算两个非零正整数的最大公约数和最小公倍数,要求两个非零正整数从键盘输入。(15分)

写一个类A,该类有一个方法public int f(int a, int b),该方法返回a和b的最大公约数;然后编写一个该类的子类B,要求子类重写方法f,而且重写的方法将返回a和b的最小公倍数。要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。在应用程序的主类中创建一个父类的对象,例如a,该对象a调用方法f返回最大公约数,然后a作为子类对象的上转型对象调用方法f返回最小公倍数。

例6:

package com.company;

class A {

    //输入两个int类型a,b

    //输出a和b的最大公约数

    public int f(int a, int b) {

        if (a < b) {

            int c = a;

            a = b;

            b = c;

        }

        int r = a % b;

        while (r != 0) {

            a = b;

            b = r;

            r = a % b;

        }

        return b;

    }

}

class B extends A {

    //输入两个int类型a,b

    //输出a和b的最小公倍数

    @Override

    public int f(int a,int b){

        int m = super.f(a, b);

        return a*b / m;

    }

}

public class Demo6 {

    public static void main(String[] args) {

        //创建一个父类对象a,调用方法f返回最大公约数

        A a = new A();

        System.out.println(a.f(27, 18));

        //a作为子类对象的上转型对象,调用方法f返回最小公倍数

        a = new B();

        System.out.println(a.f(27, 18));

    }

}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3