Java学习记录——错题总结(二十一)

阅读: 评论:0

Java学习记录——错题总结(二十一)

Java学习记录——错题总结(二十一)

第一套

1.下面代码运行结果是?

public class Test{
static{int x=5;
}
static int x,y;
public static void main(String args[]){x--;myMethod( );System.out.println(x+y+ ++x);
}
public static void myMethod( ){y=x++ + ++x;}
}

正确答案: D 你的答案: A (错误)
compiletime error
prints:1
prints:2
prints:3
prints:7
prints:8

D
1.静态语句块中x为局部变量,不影响静态变量x的值
2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。
3.java中自增操作非原子性的
main方法中:
执行x–后 x=-1
调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3

2.servlet周期包含哪些:
正确答案: A B C 你的答案: A B C D (错误)
初始化
销毁
请求处理
开始

init() --> 初始化
service() --> 处理请求
destory () --> 销毁(停止)

Servlet生命周期分成3个阶段:

1)初始化阶段:调用init方法

2)响应客户请求:调用service

3)终止:调用destory方法

初始化阶段:在下列时刻servlet容器装载servlet

1 servlet容器启动时,自动装载某些servlet

2 在servlet容器启动后,客户首次向servlet发送请求

3 servlet类文件被更新之后,重新装载servlet

Servlet被装载之后,servlet容器创建一个servlet’对象并调用servlet的init方法,在servlet生命周期内,init方法只能被调用一次。servlet工作原理:客户端发起一个请求,servlet调用service方法时请求进行响应,service对请求的方式进行了匹配,选择调用dopost或者doget等这些方法,然后进入对应方法中调用逻辑层的方法,实现对客户的响应。

响应客户请求:对于用户到达servlet的请求,servlet容器会创建特定于该请求的servletrequest和servletresponse对象,然后调用servlet的service方法,service方法从servletrequest对象中获取客户请求的信息,处理该请求,并且通过servletresponse对象向客户端返回响应信息。

终止:当web应用终止或者servlet容器终止或servlet容器重新装载servlet新实例时,servlet容器会调用servlet对象的destory方法,在destory方法中可以释放servlet占用的资源

第二套

1.下列外部类定义中,不正确的是:( )

正确答案: C 你的答案: D (错误)
class x { … }
class x extends y { … }
static class x implements y1,y2 { … }
public class x extends Applet { … }

static修饰的为类成员,会随着类的加载而加载,比如静态代码块,静态成员,静态方法(这里只是加载,并没有调用)等等,可以想象一下,如果把一个Class文件中的外部类设为static,目的难道是让这个类随着应用的启动而加载吗?如果在这次使用过程中根本没有使用过这个类,那么是不是就会浪费内存。这样来说设计不合理,总而言之,设计不合理的地方,Java是不会让它存在的。
而为什么内部类可以使用static修饰呢,因为内部类算是类的成员了,如果没有使用静态来修饰,那么在创建内部类的时候就需要先有一个外部类的对象,如果我们一直在使用内部类,那么内存中就会一直存在外部类的引用,而我们有时候只需要使用内部类,不需要外部类,那么还是会浪费内存,甚至会造成内存溢出。使用static修饰内部类之后,内部类在创建对象时就不需要有外部类对象的引用了。
最终结论就是:static可以用来修饰内部类,但是不可以用来修饰外部类

2.Java的体系结构包含( )。
正确答案: A B C D 你的答案: A B C (错误)
Java编程语言
Java类文件格式
Java API
JVM

Java体系结构包括四个独立但相关的技术:
Java程序设计语言
Java.class文件格式
Java应用编程接口(API)
Java虚拟机
我们再在看一下它们四者的关系:
当我们编写并运行一个Java程序时,就同时运用了这四种技术,用Java程序设计语言编写源代码,把它编译成Java.class文件格式,然后再在Java虚拟机中运行class文件。当程序运行的时候,它通过调用class文件实现了Java API的方法来满足程序的Java API调用

第三套

1.下面代码输出是?

enum AccountType
{SAVING, FIXED, CURRENT;private AccountType(){System.out.println("It is a account type");}
}
class EnumOne
{public static void main(String[]args){System.out.println(AccountType.FIXED);}
}

正确答案: C 你的答案: B (错误)
编译正确,输出”It is a account type”once followed by”FIXED”
编译正确,输出”It is a account type”twice followed by”FIXED”
编译正确,输出”It is a account type”thrice followed by”FIXED”
编译正确,输出”It is a account type”four times followed by”FIXED”
编译错误

答案:C
枚举类有三个实例,故调用三次构造方法,打印三次It is a account type

public class NameList
{private List names = new ArrayList();public synchronized void add(String name){names.add(name);}public synchronized void printAll() {for (int i = 0; i < names.size(); i++){System.out.(i) + "");}}public static void main(String[]args){final NameList sl = new NameList();for (int i = 0; i < 2; i++){new Thread(){public void run(){sl.add("A");sl.add("B");sl.add("C");sl.printAll();}} .start();}}
}

下面正确的2项是?

正确答案: E G 你的答案: C E (错误)
运行的时候可能抛异常
运行的时候可能没有输出,也没有正常退出
代码运行的时候可能没有输出,但是正常退出
代码输出"A B A B C C "
代码输出"A B C A B C A B C "
代码输出"A A A B C A B C C "
代码输出"A B C A A B C A B C "

在每个线程中都是顺序执行的,所以sl.printAll();必须在前三句执行之后执行,也就是输出的内容必有(连续或非连续的)ABC。
而线程之间是穿插执行的,所以一个线程执行 sl.printAll();之前可能有另一个线程执行了前三句的前几句。
E答案相当于线程1顺序执行完然后线程2顺序执行完。
G答案则是线程1执行完前三句add之后线程2插一脚执行了一句add然后线程1再执行 sl.printAll();输出ABCA。接着线程2顺序执行完输出ABCABC
输出加起来即为ABCAABCABC。

本文发布于:2024-02-04 17:07:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170712351557649.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:二十一   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23