练习4

练习4

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

A:正确

B:错误

//:String str = “aa”; str = “aa”+“bb”; 此时str的值为"aabb",但是"aabb"不是在开始的字符串"aa"后面直接连接的"bb",而是又新生成了字符串"aabb",字符串"aa"一旦被初始化,那么它的值不可能再改变了。 StringBuffer strb = StringBuffer(“aa”); strb.append(“bb”); 此时的strb的值也为"aabb",但是"aabb"是直接在开始的字符串"aa"后面连接的“bb”,并没有生成新的字符串。

2.下面有关JAVA异常类的描述,说法错误的是?

A:异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception
B:非RuntimeException一般是外部错误(非Error),其一般被 try{}catch语句块所捕获
C:Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
D:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

//答案(D)

//异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语音规则,jvm就会将出现的错误表示一个异常抛出。

异常也是java 的对象,定义了基类 java。lang。throwable作为异常父类。 这些异常类又包括error和exception。两大类

error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。

exception表示可恢复异常,包括检查异常和运行时异常。 检查异常是最常见异常比如 io异常sql异常,都发生在编译阶段。这类通过try、catch捕捉

而运行时异常,编译器没有强制对其进行捕捉和处理。一般都会把异常向上抛出,直到遇到处理代码位置,若没有处理块就会抛到最上层,多线程用thread。run()抛出,单线程用main()抛出。常见的运行异常包括 空指针异常 类型转换异常 数组月结异常 数组存储异常 缓冲区溢出异常 算术异常等,

3.在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象

A:Servlet对象
B:HTTP服务器
C:Web容器
D:JSP网页

//答案:C

//web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。

public boolean returnTest()
{
    try
    {
        return true;
    }
    catch (Exception e)
    {
 
    }
    finally
    {
        return false;
    }
}

以上代码返回值是什么?

//答案:false

//一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效

5.下列有关Servlet的生命周期,说法不正确的是?

A:在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
B:在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
C:在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
D:destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

//答案:A

//创建Servlet的实例是由Servlet容器来完成的,且创建Servlet实例是在初始化方法init()之前

//Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet

(2)创建:通过调用servlet构造函数创建一个servlet对象

(3)初始化:调用init方法初始化

(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求

(5)卸载:调用destroy方法让servlet自己释放其占用的资源



public class Test {
public static void main(String[] args) {
System.out.println(test());
 
}
private static int test() {
int temp = 1;
try {
System.out.println(temp);
return ++temp;
} catch (Exception e) {
System.out.println(temp);
return ++temp;
} finally {
++temp;
System.out.println(temp);
}
}
}
  • A:1,2,2
    
  • B:1,2,3
    
  • C:1,3,3
    
  • D:1,3,2
    

//答案:D

// 1. finally块一定会执行(除非退出虚拟机),无论是否try…catch。

2、finally块前有return,会先执行return语句,并保存下来,再执行finally块,最后return。

3、finally块前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。

执行顺序为:

输出try里面的初始temp:1;

temp=2;

保存return里面temp的值:2;

执行finally的语句temp:3,输出temp:3;

返回try中的return语句,返回存在里面的temp的值:2;

输出temp:2。

7.关于下面这段Java程序,哪些描述是正确的:( )

public class ThreadTest extends Thread {
public void run() {
System.out.println("In run");
yield();
System.out.println("Leaving run");
}
public static void main(String []argv) {
(new ThreadTest()).start();
}
}
A:程序运行输出只有In run
B:程序运行输出只有Leaving run
C:程序运行输出先有In run后有Leaving run
D:程序运行输出先有Leaving run后有In run
E:程序没有任何输出就退出了
F:程序将被挂起,只能强制退出

//答案:C

//Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值