java试题复盘——9月8日

 上:

1.可将语句块或方法设为同步使用的语句是(A)

 A synchronized              用于方法或者代码块前,使此方法或者代码变成同步的

 B static                            用于声明静态变量

 C abstract                       用于定义抽象类或者方法

 D final                              用于声明常量,即只能赋值一次的变量

2.关于 Java 线程,下面说法错误的是(C)。

 A 创建线程可以通过实现Runnable接口和继承Thread类

 B java利用线程使整个系统成为异步

 C 新线程一旦被创建,它将自动开始运行

3.对于一个已经不被任何变量引用的对象,当垃圾回收器准备回收该对象所占用的内存时,将自动调用该对象的哪个方法(A)

A  finalize

B  notify

C  notifyAll

D  hashCode

题解:就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用finalize()方法来回收资源。

    • 在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消
    • JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。
    • 垃圾回收是由守护进程执行的

4.有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。(  D  )

public class Interesting{

 // 省略代码

}

 import java.awt.*;

 package mypackage;

 class OtherClass{   }

 public class MyClass{ }

题解:在同一个java原文件中,可以有多个class类,但是只能有一个公共的public class类

5.在类Tester中定义方法如下,B

public double max(int x, int y) { // 省略 }

则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?

 A public int max(int a, int b) {}

 B public int max(double a, double b) {}

 C public double max(int x, int y) {}

 D private double max(int a, int b) {}

题解:重载就是一句话:同名不同参,返回值无关。

               覆盖/重写:同名同参

6.Math.round(11.5) 等于:(C)

 A.11

 B.11.5

 C.12

 D.12.5

题解:四舍五入

7.在Java中,以下关于方法重载和方法重写描述正确的是?D

 A.方法重载和方法的重写实现的功能相同

 B.方法重载出现在父子关系中,方法重写是在同一类中

 C.方法重载的返回值类型必须一致,参数项必须不同

 D.方法重写的返回值类型必须相同或相容。(或是其子类)

题解:

方法重载(overload):

1.必须是同一个类

2方法名(也可以叫函数)一样

3参数类型不一样或参数数量不一样

 

方法的重写(override)两同两小一大原则:

方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,

子类抛出异常小于等于父类方法抛出异常,

子类访问权限大于等于父类方法访问权限。

8.以下描述错误的一项是(C)?

 A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行  到了第几行,是线程隔离的

 B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的

 C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的

 D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

题解:首先来说这个答案是很容易选出来的,只要知道静态变量是属于类的,在方法中是没有静态变量的,就可以选出正确答案了,但这儿还要把A C D说一下。大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) ,   VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack  ( 本地方法栈 ),其中Method Area 和  Heap 是线程共享的  ,VM Stack,Native Method Stack  和Program Counter Register  是非线程共享的(每个线程运行的时候都会单独的创建)。方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

9.以下java程序代码,执行后的结果是(B)

public class Test {

    public static void main(String[] args) {  

        Object o = new Object() { 

             public boolean equals(Object obj) { 

                 return true;

         }

     };  

     System.out.println(o.equals("Fred"));

     }

}

 A.Fred

 B.true

 C.编译错误

 D.运行时抛出异常

10.下面代码执行后的结果为(   C   )

int main()

{

int sum=0;

int i=0,j=0;

for(j=0;j<6;j++)

{

if(j%2)continue;

sum++;

}

printf("sum=%d",sum);

return 0;

}

 A.sum=1

 B.sum=2

 C.sum=3

 D.其他几项都不对

11.关于抽象类的叙述正确的是?(A)

 A.抽象类不可以实例化

 B.抽象类就是一种特殊的接口

 C.抽象类的方法都是抽象方法

 D.抽象类的导出类一定不是抽象类

题解:

A选项中,抽象类不能实例化,这句是正确的。后面,抽象类不能申明为对象,是错误的。java中,接口和抽象类,都可以声明为对象,只需要在实例化的时候,用一个该接口/抽象类的实现类实例化就行了。即:

interface / abstract class obj = new class();其中,new后面的class是前面接口/抽象类的实现类。

B选项中,接口是一种特殊的抽象类。其中,成员变量都是默认public static final修饰的,方法都是public abstract修饰的,并且除了default和static的以外,只有声明,没有方法体。

C选项中,抽象类的方法,可以是抽象abstract的,也可以是普通的。就算全部是普通方法,也可以用abstract修饰。

D选项中,导出类,及子类,抽象类的子类可以是抽象的,也可以是普通的

12.下面代码的输出结果是什么?D

public class ZeroTest {

    public static void main(String[] args) {

     try{

       int i = 100 / 0;

       System.out.print(i);

  }catch(Exception e){

       System.out.print(1);

       throw new RuntimeException();

  }finally{

       System.out.print(2);

  }

      System.out.print(3);

 }

 }

 A.3

 B.123

 C.1

 D.12

题解:

还是需要理解Try...catch...finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了

13.能单独和finally语句一起使用的块是( A )

 A.try

 B.catch

 C.throw

 D.throws

14.下列有关Thread的描述,哪个是正确的?C

 A.启动一个线程的方法是:thread. run()

 B.结束一个线程的通常做法是:thread. stop()

 C.将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。

 D.让一个线程等待另一个线程的通知的方法是:thread. sleep()

15.java中下面哪个能创建并启动线程(C)

public class MyRunnable implements Runnable          {

     public void run()             {

         //some code here

     }

 }

 A.new Runnable(MyRunnable).start()

 B.new Thread(MyRunnable).run()

 C.new Thread(new MyRunnable()).start()

 D.new MyRunnable().start()

16.HashMap和HashTable的描述,错误的是?D

 A.他们都实现了Map接口。

 B.HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。

 C.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

 D.通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。

题解:

contains方法容易引起歧义,因此在HashMap中改成containsKey和containsValue方法来替换。

17.尝试编译以下程序会产生怎么样的结果?(C)

public class MyClass {

    long var;

    public void MyClass(long param) { var = param; }//(1)

    public static void main(String[] args) {

        MyClass a, b;

        a =new MyClass();//(2)

        b =new MyClass(5);//(3)

    }

}

 A.编译错误将发生在(1),因为构造函数不能指定返回值

B.编译错误将发生在(2),因为该类没有默认构造函数

 C.编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数

D.该程序将正确编译和执行

18.如下代码的输出是

package Test;

public class Test {

    private static void test(int[] arr) {

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

            try {

                if (arr[i] % 2 == 0) {

                    throw new NullPointerException();

                } else {

                    System.out.print(i);

                }

            } finally {

                System.out.print("e");

            }

        }

    }

    public static void main(String[]args) {

        try {

            test(new int[] {0, 1, 2, 3, 4, 5});

        } catch (Exception e) {

            System.out.print("E");

        }

    }

}

可以得到的结论是( B)

A.编译出错

B.eE

C. Ee

D. eE1eE3eE5

E. Ee1Ee3Ee5

19.下面有关servlet service描述错误的是? B

 A.不管是post还是get方法提交过来的连接,都会在service中处理

 B.doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的

 C.service()是在javax.servlet.Servlet接口中定义的

 D.service判断请求类型,决定是调用doGet还是doPost方法

20.正则表达式中,表示匹配非数字字符的字符是(D)?

 A.\b

 B.\d

 C.\B

 D.\D

21.What is displayed when the following is executed;   A

double d1=-0.5;

System.out.println("Ceil d1="+Math.ceil(d1));

System.out.println("floor d1="+Math.floor(d1));

 A.Ceil d1=-0.0

floor d1=-1.0

 B.Ceil d1=0.0

floor d1=-1.0

 C.Ceil d1=-0.0

floor d1=-0.0

 D.Ceil d1=0.0

floor d1=0.0

 E.Ceil d1=0

floor d1=-1

题解:

1.Math.round():根据“round”的字面意思“附近、周围”,可以猜测该函数是求一个附近的整数,看下面几个例子就明白。

小数点后第一位<5

正数:Math.round(11.46)=11

负数:Math.round(-11.46)=-11

 

小数点后第一位>5

正数:Math.round(11.68)=12

负数:Math.round(-11.68)=-12

 

小数点后第一位=5

正数:Math.round(11.5)=12

负数:Math.round(-11.5)=-11

总结:(小数点后第一位)大于五全部加,等于五正数加,小于五全不加。

 

2.Math.ceil():向上取整

例如:

Math.ceil(11.46)=Math.ceil(11.68)=Math.ceil(11.5)=12

Math.ceil(-11.46)=Math.ceil(-11.68)=Math.ceil(-11.5)=-11

 

3.Math.floor():向下取整

例如:

Math.floor(11.46)=Math.floor(11.68)=Math.floor(11.5)=11

Math.floor(-11.46)=Math.floor(-11.68)=Math.floor(-11.5)=-12

22.(多选)下面的Java赋值语句哪些是有错误的 (B F)

A. int i =1000;

B. float f = 45.0;

C. char s = ‘\u0639’;

D. Object o = ‘f’;

E. String s = "hello,world\0";

F. Double d = 100;

23.(多选)关于Java的一些概念,下面哪些描述是正确的:(   B F   )

A. 所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException

B. 通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行

C. java中所有的数据都是对象

D. Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize方法一定会得到执行

E. Java是跨平台的语言,无论通过哪个版本的Java编写的程序都能在所有的Java运行平台中运行

F. Java通过synchronized进行访问的同步,synchronized作用非静态成员方法和静态成员方法上同步的目标是不同的

题解:

A:Java中所有错误和异常的父类是java.lang.Throwable

C:基本数据类型不是对象,不能用new的方法获取,但是每个基本数据类型都对应着封装类型,这些封装类型为了解决基本数据类型面向对象用的。

D:Java垃圾回收器负责回收无用对象占据的内存资源,但对象没有使用new获取了一块特殊区域,这块特殊区域的回收使用finallize()

F:Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”

Synchronized修饰静态方法,实际上是对该类对象加锁,俗称“类锁”。

24.(多选)关于Java中的数组,下面的一些描述,哪些描述是准确的:(   A C F    )

 A.数组是一个对象,不同类型的数组具有不同的类

 B.数组长度是可以动态调整的

 C.数组是一个连续的存储结构

 D.一个固定长度的数组可类似这样定义: int array[100]                 没有这样的定义

 E.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较                使用equals比较

 F.可以二维数组,且可以有多维数组,都是在Java中合法的

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

A. static  void  method( )

B. public  void  method( )

C. final  void  method( )

D. abstract  void  method( )

26.在程序代码中写的注释太多,会使编译后的程序尺寸变大。B

 A.正确

 B.错误

27.abstract和final可以同时作为一个类的修饰符。(B  )

 A.正确

 B.错误

28.分析以下代码,说法正确的是(D)

public static void main(String[] args) {

     System.out.println(val());

 }

 

 public static int val() {

     int num = 5;

     try {

     num = num / 0;

 } catch (Exception e) {

     num = 10;

 } finally {

     num = 15;

 }

 return num;

 }

A. 运行时报错

B. 程序正常运行,输出值为5

C. 程序正常运行,输出值为10

D. 程序正常运行,输出值为15

29.以下表达式的类型和值是什么?(注意整数除法)(D)

-5 + 1/4 + 2*-3 + 5.0

A. int -3

B. int -4

C. double -5.5

D. double -6.0

30.关于JAVA的垃圾回收机制,下面哪些结论是正确?B

 A.程序可以任意指定释放内存的时间

 B.JAVA程序不能依赖于垃圾回收的时间或者顺序

 C.程序可明确地标识某个局部变量的引用不再被使用                  局部变量声明在栈中,当函数调用完毕后自动清空栈,并不是由jvm来回收的,jvm只负责回收堆中内存。

 D.程序可以显式地立即释放对象占有的内存

31.代码行float t=5.1; int i=t; ,不正确的是 B

 A.代码不能编译

 B.代码编译, i被设置为5            在t前面没有加强制转换

 C.第二行若改为 int i=(byte)t 则可编译

 D.第一行若改为 float t=5.1f 则可编译

32.下面有关jdbc statement的说法错误的是?C

 A.JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程

 B.对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”

 C.PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值

 D.PreparedStatement可以阻止常见的SQL注入式攻击

33.如下代码的 结果是什么 ?  B

class Base {

    Base() {

    System.out.print("Base");

    }

}

public class Alpha extends Base {

    public static void main( String[] args ) {

        new Alpha();

        //调用父类无参的构造方法

        new Base();

    }

}

A. Base

B. BaseBase

C. 编译失败

D. 代码运行但没有输出

E. 运行时抛出异常

34.关于访问权限,说法正确的是? ( A)

A. 类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A可以访问类B的方法testB

B. 类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A不可以访问类B的方法testB

C. 访问权限大小范围:public > 包权限 > protected > private

D. 访问权限大小范围:public > 包权限 > private > protected

35.关于protected 修饰的成员变量,以下说法正确的是  A

A. 可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问

B. 只能被该类本身和该类的所有的子类访问

C. 只能被该类自身所访问

D. 只能被同一个包中的类访问

题解:

(1)public:可以被所有其他类所访问。

(2)private:只能被自己访问和修改。

(3)protected:自身,子类及同一个包中类可以访问。

(4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

36.下列不正确的 Java 语言标识符是( C)

A. Sky

B. $Computer

C. for                 关键字

D.NULL

37.以下哪个类包含方法flush()?(B)

A. InputStream

B. OutputStream

C. A 和B 选项都包含

D. A  和B 选项都不包含

题解:

flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。

38.关于 访问权限说法正确 的是 ? (  B  )

A. 类定义前面可以修饰public,protected和private

B. 内部类前面可以修饰public,protected和private

C. 局部内部类前面可以修饰public,protected和private

D. 以上说法都不正确

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

Thread t = new Thread() {

public void run() {

360DW();

}

};

t.run();

System.out.print("DW");

}

static void 360DW() {

System.out.print("360");

}   B

 A.DW

 B.360

 C.360DW

 D.都不输出

40.java8中,下面哪个类用到了解决哈希冲突的开放定址法    C

 A.LinkedHashSet

 B.HashMap

 C.ThreadLocal

 D.TreeMap

题解:

Threadlocalmap使用开放定址法解决hash冲突,hashmap使用链地址法解决hash冲突。

41(多选).以下哪些方法可以取到http请求中的cookie值(B D)?

 A.request.getAttribute

 B.request.getHeader

 C.request.getParameter

 D.request.getCookies

题解:

链接:

1)Cookie[] getCookies()
返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。

 

2)Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。

 

3)String getHeader(String name)
以字符串形式返回指定的请求头的值。Cookie也是头的一种;

 

4)String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。

42(多选).Java程序的种类有(B C D )

A. 类(Class)

B. Applet

C. Application

D. Servlet

43(多选).byte b1=1,b2=2,,b6,b8;

final byte b4=4,b5=6,b7;

b3=(b1+b2);  /*语句1*/

b6=b4+b5;    /*语句2*/

b8=(b1+b4);  /*语句3*/

b7=(b2+b5);  /*语句4*/

System.out.println(b3+b6);

下列代码片段中,存在编译错误的语句是( B C D )

 A.语句2

 B.语句1

 C.语句3

 D.语句4

题解:

------------知识点------------

Java表达式转型规则由低到高转换

1、所有的byte,short,char型的值将被提升为int型;

2、如果有一个操作数是long型,计算结果是long型;

3、如果有一个操作数是float型,计算结果是float型;

4、如果有一个操作数是double型,计算结果是double型;

5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。

--------------解析--------------

语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;

语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;

语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);

语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变

44.覆盖(重写)与重载的关系是(A)。

A. 覆盖(重写)只有出现在父类与子类之间,而重载可以出现在同一个类中

B. 覆盖(重写)方法可以有不同的方法名,而重载方法必须是相同的方法名

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

D. 覆盖(重写)与重载是同一回事

题解:
首先,重载和重写都是多态的一种体现方式。重载是编译期间的活动,重写是运行期间的活动。
     其次,重载是在一个类中定义相同的名字的方法,方法的参数列表或者类型要互相不同,但是返回值类型不作为是否重载的标准,可以修改可见性;
     重写是不同的,要求子类重写基类的方法时要与父类方法具有相同的参数类型和返回值,可见性需要大于等于基类的方法

45.对接口的描述正确的是(A)

A. 一个类可以实现多个接口

B. 接口可以有非静态的成员变量

C. 在jdk8之前,接口可以实现方法

D. 实现接口的任何类,都需要实现接口的方法

46.覆盖与重载的关系是( A)

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

 B.覆盖方法和重载方法都可以不同名,也可以同名

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

 D.覆盖与重载是同一回事

47.基本的Java语言函数存储在以下哪个java包中?(A)

A. java.lang

B. java.io

C. java.net

D. java.util

48.对于Java中异常的描述正确的是(D )

A. 用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。

B. 如果try块中没有抛出异常,finally块中的语句将不会被执行。

C. 抛出异常意味着程序发生运行时错误,需要调试修改

D. Java中的可不检测(unchecked)异常可能来自RuntimeException类或其子类。

题解:
A错 在调用此方法的时候 也可以再次申明以将异常交由更高一级处理。
B错 finally块中的语句一定会被执行。除非catch块中有System.exit(0)
C错 抛出异常不一定是运行时异常,也有可能是编译时异常。
D对 运行时异常的特点是Java编译器不会检查它。

49.以下对选择语句描述错误的是(A)

A. 根据某一条件重复执行一部分代码直到满足终止条件为止

B. 可以根据条件控制程序流程,改变程序执行的顺序

C. 选择语句可以嵌套使用

D. 当条件满足时就会执行相应的语句

50.Java程序中的类名称必须与存放该类的文件名相同。B

A. 对

B. 错

51.以下代码执行后输出结果为( A)

public class Test {

    public static void main(String[] args) {

        System.out.println("return value of getValue(): " +

        getValue());

    }

     public static int getValue() {

         try {

             return 0;

         } finally {

             return 1;

         }

     }

 }

A. return value of getValue(): 1

B. return value of getValue(): 0

C. return value of getValue(): 0return value of getValue(): 1

D. return value of getValue(): 1return value of getValue(): 0

52.多重继承的概念在Java中实现是通过如下哪些?(B)

I. 扩展两个或多个类

II. 扩展一个类并实现一个或多个接口。

III. 实现两个或更多接口。

A. 只有I &amp;II

B. 只有II &amp; III

C. 只有III

D. 都是

53.This调用语句必须是构造函数中的第一个可执行语句。B

A. 正确

B. 错误

54.下列关于构造函数的描述中,错误的是(D)

A. 构造函数可以设置默认的参数

B. 构造函数在定义类对象时自动执行

C. 构造函数可以是内联函数

D. 构造函数不可以重载

55.int i=5;

int s=(i++)+(++i)+(i--)+(--i);

s=( )//s 的值是什么? E

 A.28

 B.25

 C.21

 D.26

 E.24

 F.23

56.子类要调用继承自父类的方法,必须使用super关键字。B

A. 正确

B. 错误

57.下列代码执行结果为(A)

public static void main(String args[])throws InterruptedException{

            Thread t=new Thread(new Runnable() {

                public void run() {

                    try {

                        Thread.sleep(2000);

                    } catch (InterruptedException e) {

                        throw new RuntimeException(e);

                    }

                    System.out.print("2");

                }

            });

            t.start();

            

            t.join();

            System.out.print("1");

        }

A. 21

B. 12

C. 可能为12,也可能为21

D. 以上答案都不对

题解:

1、子类构造函数调用父类构造函数用super

2、子类重写父类方法后,若想调用父类中被重写的方法,用super

3、未被重写的方法可以直接调用。

58.下列不属于Java语言性特点的是  D

A. Java致力于检查程序在编译和运行时的错误

B. Java能运行虚拟机实现跨平台

C. Java自己操纵内存减少了内存出错的可能性

D. Java还实现了真数组,避免了覆盖数据类型的可能

题解:

Java致力于检查程序在编译和运行时的错误。
Java虚拟机实现了跨平台接口
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能。
注意,是避免数据覆盖的可能,而不是数据覆盖类型

59.下面程序段的时间复杂度是(B)

i = k = 0;

while( k < n ){

   i ++ ;

k += i ;

}

 A.O(n)

 B.O(n^1/2)

 C.O(n*i)

 D.O(n+i)

60.以下描述正确的是(B)?

 A.while循环语句的循环体至少执行1次

 B.do-while循环可以写成while循环的格式

 C.continue语句可以出现在各种循环体中

 D.break语句不可以出现在循环体内

61.下列不属于java语言性特点的是B

 A.java能检查程序在编译和运行时的错误

 B.java能运行虚拟机实现跨平台

 C.java自己操纵内存减少了内存出错的可能性

 D.java还实现了真数组,避免了覆盖数据的可能

62.关于以下代码的说明,正确的是( C)

1. class StaticStuff

2. {

3. static int x=10;

4. static { x+=5;}

5. public static void main(String args[ ])

6. {

7. System.out.println(“x=” + x);

8. }

9. static { x/=3;}

10. }

 A.4行与9行不能通过编译,因为缺少方法名和返回类型

 B.9行不能通过编译,因为只能有一个静态初始化器

 C.编译通过,执行结果为:x=5

 D.编译通过,执行结果为:x=3

63(多选).java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?A B

 A.Hashtable

 B.Vector

 C.TreeSet

 D.LinkedList

题解:

HashMap是线程安全的HashMap

Vector是线程安全的ArrayList

TreeSet和LinkedList都不是线程安全的

64.(多选)对Collection和Collections描述正确的是 B D

 A.Collection是java.util下的类,它包含有各种有关集合操作的静态方法

 B.Collection是java.util下的接口,它是各种集合结构的父接口

 C.Collections是java.util下的接口,它是各种集合结构的父接口

 D.Collections是java.util下的类,它包含有各种有关集合操作的静态方法

65.(多选)常用的servlet包的名称是? B D

 A.java.servlet

 B.javax.servlet

 C.servlet.http

 D.javax.servlet.http

66.(多选)以下哪种方式实现的单例是线程安全的 A B C D

 A.枚举

 B.静态内部类

 C.双检锁模式

 D.饿汉式

67.StringBuffer类对象创建之后可以再修改和变动. A

A.正确

B.错误

68.下面关于继承的描述正确的是  A

A.在Java中只允许单一继承

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

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

D.Java的单一继承使代码不可靠

69.类Car里面有个方法run(),如果直接用Car.run(),则方法run前面必须用的关键词是?  (D )

A.class

B.final

C.public

D.static

题解:

被sataic声明的为静态方法,可以直接通过类名调用而不需要通过对象调用。

70.代码

System.out.println(10%3*2);

将打印?B

A.1

B.2

C.4

D.6

71.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是? B

A.实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。

B.局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值                  必须要初始化

C.类变量指的是用static修饰的属性

D.final变量指的是用final 修饰的变量

72.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是?  ( C)

A.void use() { …}

B.protected void use() { …}

C.public void use() { …}

D.以上语句都可以用在类SmallCup中

73.java接口的方法修饰符可以为?(忽略内部接口)       D

A.private

B.protected

C.final

D.abstract

74.已知如下类说明:

public class Test{

    private float f=1.0f;

    int m=12;

    static int n=1;

    public static void main(String args[]){

        Test t=new Test();

    }

}

如下哪些使用是正确的(D)

A.t.f = 1.0

B.this.n

C.Test.m

D.Test.n

75.观察以下代码:

class Car extends Vehicle

{

    public static void main (String[] args)

    {

        new  Car(). run();

    }

    private final void run()

    {

        System. out. println ("Car");

    }

}

class Vehicle

{

    private final void run()

    {

        System. out. println("Vehicle");

    }

}

下列哪些针对代码运行结果的描述是正确的?A

A.Car

B.Vehicle

C.Compiler error at line 3

D.Compiler error at line 5

E.Exception thrown at runtime

正确:31

错误:44

 

 

 

下:

 

猜你喜欢

转载自www.cnblogs.com/buhuiflydepig/p/11485377.html