当前位置:   article > 正文

Java基础笔试练习(二十)_关于jsp生命周期的叙述下列哪些为真

关于jsp生命周期的叙述下列哪些为真

Java基础笔试练习(二十)

1.请给出程序最终输出内容。

  1. int i = 3;
  2. String result = new String();
  3. switch (i) {
  4. case 1:
  5. result = result + "him ";
  6. case 2:
  7. result = result + "her ";
  8. case 3:
  9. result = result + "it ";
  10. default:
  11. result = result + "me ";
  12. }
  13. System.out.println(result);

A.it me
B.him her it me
C.him her
D.me

答案:
A

解析:
根据switch()括号里的值,进行匹配,走相应的case。case没有break就继续往下走

2.下列描述中,错误的是( )

A.java要求编程者管理内存
B.java的安全性体现在多个层次上
C.java中没有指针机制
D.java有多线程机制

答案:
A

解析:
java与C 很大的一点区别就是java是不需要使用者关注内存分配以及管理的

3.Which is not Java primitive types?

A.short
B.Boolean
C.byte
D.float

答案:
B

解析:
java规定类名首字母必须大写,这里可以直观的看出来Boolean是一个引用类型,不是基本数据类型。
java中的基本数据类型都对应一个引用类型,如Float是float的引用类型,Integer是int的引用类型

4.下列说法正确的是()

A.在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法

答案:
B

解析:
在类方法中不能有this关键字,直接调用类方法即可,A错误,B正确,在类方法中可以通过创建实例对象调用类的实例方法,C\D错误

5.java语言中,按照一定格式生成程序的文档的工具是?

A.javac
B.javah
C.javadoc
D.jar

答案:
C

解析:
jar    将许多文件组合成一个jar文件
javac  编译
javadoc 它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。
javah 把java代码声明的JNI方法转化成C\C++头文件。

6.以下程序的执行结果是:

  1. static boolean foo(char c)
  2.  {
  3.  System.out.print(c);
  4.  return true;
  5.  }
  6.  public static void main(String[] args) {
  7.  int i =0;
  8.  for(foo('A');foo('B')&&(i<2);foo('C'))
  9.  {
  10.  i++;
  11.  foo('D');
  12.  }
  13.  }

A.ABDCBDCB
B.ABCDABCD
C.编译时出错
D.运行时抛出异常

答案:
A

解析:
这题考察的应该是for循环的执行顺序:
1只在开头执行一次便不再执行;然后是2->4->3->2->4->3这样循环下去;等到满足终止条件时到2就停止了。

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

A.用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。
B.如果try块中没有抛出异常,finally块中的语句将不会被执行。
C.抛出异常意味着程序发生运行时错误,需要调试修改
D.Java中的可不检测(unchecked)异常可能来自RuntimeException类或其子类。

答案:
D

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

8.给出下列代码,第三行将输出什么?

  1. public class SwitchTest{//1
  2.     public static void main(String[] args) {//2
  3.         System.out.println("value="+switchit(4));//3
  4.     }//4
  5.     public static int switchit(int x) {
  6.         int j=1;
  7.         switch (x) {
  8.         case 1:j++;
  9.         case 2:j++;
  10.         case 3:j++;
  11.         case 4:j++;
  12.         case 5:j++;
  13.         default:j++;
  14.         }
  15.         return j+x;
  16.     }
  17. }

A.value=6
B.value=8
C.value=3
D.value=5
E.value=4

答案:
B

解析:
没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8

9.以下代码执行的结果显示是多少()?

  1. public class Demo{
  2.     public static void main(String[] args){
  3.         System.out.print(getNumber(0));
  4.         System.out.print(getNumber(1));
  5.         System.out.print(getNumber(2));
  6.         System.out.print(getNumber(4));
  7.     }
  8.     public static int getNumber(int num){
  9.         try{
  10.             int result = 2 / num;
  11.             return result;
  12.         }catch (Exception exception){
  13.             return 0;
  14.         }finally{
  15.             if(num == 0){
  16.                 return -1;
  17.             }
  18.             if(num == 1){
  19.                 return 1;
  20.             }
  21.         }
  22.     }
  23. }

A.0110
B.-1110
C.0211
D.-1211

答案:
B

解析:
finally一定会在return之前执行,但是如果finally使用了return或者throw语句,将会使trycatch中的return或者throw失效

10.执行完以下代码 int [ ]  x = new int[10] ;后,以下哪项说明是正确的( )

A.x[9]为0
B.x[9]未定义
C.x[10]为0
D.x[0]为空

答案:
A

解析:
数组定义后,默认元素为0

11.下列说法正确的有()

A.能被java.exe成功运行的java class文件必须有main()方法
B.J2SDK就是Java API
C.Appletviewer.exe可利用jar选项运行.jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法

答案:
A

解析:
B、C、D都错
A:正确main方法是入口
B:J2SDK当然不仅仅包含java API
C:jar选项是java.exe 的选项
D:Appletviewer是运行applet的, applet 不用main方法,继承applet类即可。

12.假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?

  1. public class Base
  2. {
  3.    public void methodOne()
  4.    {
  5.       System.out.print("A");
  6.       methodTwo();
  7.    }
  8.    public void methodTwo()
  9.    {
  10.       System.out.print("B");
  11.    }
  12. }
  13. public class Derived extends Base
  14. {
  15.    public void methodOne()
  16.    {
  17.       super.methodOne();
  18.       System.out.print("C");
  19.    }
  20.    public void methodTwo()
  21.    {
  22.       super.methodTwo();
  23.       System.out.print("D");
  24.    }
  25. }

A.ABDC
B.AB
C.ABCD
D.ABC

答案:
A

解析:
这是一道类多态的向上转型题。
Base b = new Derived();
向上转型:父类只能调用父类方法或者子类覆写后的方法,而子类中的单独方法则是无法调用的。
因此:
调用的顺序是:(1)、(2)、(3)、(4)、(5)、(6)、(7) ; 得到的结果是:ABDC

13.下面字段声明中哪一个在interface主体内是合法的? ()

A.private final static int answer = 42;
B.public static int answer = 42;
C.final static answer = 42;
D.int answer;

答案:
B

解析:
在接口中,属性都是默认public static final修饰的,所以:
A(错误):不能用private修饰;
B(正确):在接口中,属性默认public static final,这三个关键字可以省略;
C(错误):没写属性的类型;
D(错误):final修饰的属性必须赋值;

14.ResultSet中记录行的第一列索引为?

A.-1
B.0
C.1
D.以上都不是

答案:
C

解析:
ResultSet跟普通的数组不同,索引从1开始而不是从0开始

15.Java 多线程有几种实现方法?( )

A.继承Thread类
B.实现Runnable接口
C.实现Thread接口
D.以上都不正确

答案:
AB

解析:
实现多线程的方法:
1.继承Thread类
2.实现Runnable接口
3.实现Callable接口

16.关于下面的一段代码,以下哪些说法是正确的:

  1. public static void main(String[] args) {
  2.     String a = new String("myString");
  3.     String b = "myString";
  4.     String c = "my" + "String";
  5.     String d = c;
  6.     System.out.print(a == b);
  7.     System.out.print(a == c);
  8.     System.out.print(b == c);
  9.     System.out.print(b == d);
  10. }

A.System.out.print(a == b)打印出来的是false
B.System.out.print(a == c)打印出来的是true
C.System.out.print(b == c)打印出来的是false
D.System.out.print(b == d)打印出来的是true

答案:
AD

解析:
A:a指向堆内存,b指向常量池,因此地址不相等,false
B:java有常量优化机制,c也指向常量池,且与b指向同一个,则a与c地址不相等,false;
C:b与c地址相等,true
D:d是c的副本,地址相同,所以b与d地址相等,true

17.Consider the following code:Which test would return true?

  1. Integer s=new Integer(9);
  2. Integer t=new Integer(9);
  3. Long u=new Long(9);

A.(s==u)
B.(s==t)
C.(s.equals(t))
D.(s.equals(9))
E.(s.equals(new Integer(9))

答案:
CDE

解析:
(s==u) ,因为, s 是 Integer 类型, u 是 Long 类型,两个不同类型的引用不能进行 == 比较。
(s==t) , s 是指向一个 9 的引用,而 t 也是一个指向 9 的引用,虽然都是指向 9 ,但却是指向不同的 9 ,即是两个不同的引用。因此 == 比较返回的是假。
(s.equals(t)) , Integer 的 equals 方法如下:

  1.     public boolean equals(Object obj) {
  2.         if (obj instanceof Integer) {
  3.             return value == ((Integer)obj).intValue();
  4.         }
  5.         return false ;
  6. }

是 Integer 的实例且 value 值也相等的情况下返回真,其他返回假。
在这里, s 和 t 都是 Integer 类型且值都为 9 ,因此结果为真。
(s.equals(9)) , 在进行 equals 比较之前,会对 9 调用 Integer.valueOf 方法,进行自动装箱 , 由于 IntegerCache 中已经存在 9 ,所以,直接返回其引用,引用相同, equals 就自然相同了。所以结果为真。
(s.equals( new Integer(9)) ,直接创建了一个新的 Integer 实例,但且值也为 9 ,所以,满足条件,返回真。

18.关于JSP生命周期的叙述,下列哪些为真?

A.JSP会先解释成Servlet源文件,然后编译成Servlet类文件
B.每当用户端运行JSP时,jsp init()方法都会运行一次
C.每当用户端运行JSP时,jsp service()方法都会运行一次
D.每当用户端运行JSP时,jsp destroy()方法都会运行一次

答案:
AC

解析:
B:init方法:负责初始化Servlet对象。在Servlet的整个生命周期类,init()方法只被调用一次。
D:destroy方法:销毁Servlet对象,释放占用的资源,Servlet要被卸载时调用

19.下面有关java threadlocal说法正确的有?

A.ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
B.从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
C.在Thread类中有一个Map,用于存储每一个线程的变量的副本
D.对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式

答案:
ABCD

解析:
ThreadLocal不是一个线程而是一个线程的本地化对象。当工作于多线程环境中的对象采用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程分配一个独立的副本。每个线程都可以独立的改变自己的副本,而不影响其他线程的副本。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/339571
推荐阅读
相关标签
  

闽ICP备14008679号