1.关于 java 的异常处理机制的叙述哪些正确?
A.通常情况下,不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
B.当try区段的程序发生异常并被捕获时,才会执行catch区段的程序
C.catch部分捕捉到异常情况时,才会执行finally部分
D.其它选项都不正确
正确答案:AB
A. 正确。在Java中,
finally
块是无论是否发生异常都会执行的代码块。它通常用于清理资源,如关闭文件流或数据库连接。即使在异常被抛出并在catch
块中处理后,finally
块仍然会执行。B. 正确。当
try
块中的代码执行过程中出现异常,并且这个异常被匹配到catch
块中定义的异常类型时,catch
块中的代码会被执行。这是Java异常处理机制的基本工作原理,用于处理和恢复异常情况。C. 错误。
catch
部分捕捉到异常情况时,并不一定会执行finally
部分。如果在catch
块中有return
语句或者抛出了另一个异常,finally
部分仍然会执行,但在控制流返回之前。D. 错误。根据以上分析,选项D是不正确的。
综上所述,正确答案是AB。
2.下列描述错误的是?
A.类只能继承一个父类,但是可以实现多个接口
B.抽象类自身可以定义成员而接口不可以
C.抽象类和接口都不能被实例化(忽略匿名内部类)
D.一个类可以有多个父类和多个基接口
正确答案:BD
B. 错误。从Java 8开始,接口也可以定义成员,包括常量字段和默认方法。在此之前,接口只能定义常量字段。
D. 错误。在Java中,一个类不能有多个父类。Java支持单继承,即一个类只能继承自一个父类。但是,一个类可以实现多个接口。
A. 正确。Java确实支持单一继承,一个类只能继承一个直接父类,但可以实现多个接口。
C. 正确。抽象类和接口都不能被直接实例化。要使用抽象类或接口的功能,需要创建其子类的实例或实现接口的类的实例。
因此,正确答案是BD。
3.下面有关java类加载器,说法正确的是?
A.引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
B.扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
C.系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
D.tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用
正确答案:ABCD
A. 正确。引导类加载器(Bootstrap Class Loader)是Java虚拟机的一部分,它负责加载Java的核心库,如rt.jar,它是用本地代码(如C/C++)实现的,而不是Java字节码。
B. 正确。扩展类加载器(Extension Class Loader)负责加载Java的扩展库,这些库通常位于JRE的lib/ext目录下,或者通过系统属性"java.ext.dirs"指定的路径。
C. 正确。系统类加载器(System Class Loader),也称为应用类加载器,它根据Java应用的类路径(CLASSPATH)或者由系统属性"java.class.path"指定的路径来加载Java类。
D. 正确。在Tomcat这样的Java EE应用服务器中,为了实现类的隔离和模块化,通常会为每个部署的Web应用程序创建一个独立的类加载器。这样,每个Web应用就可以拥有自己的类空间,避免了类冲突。
所有这些描述都是正确的,它们准确地反映了Java类加载器的工作原理和应用场景。
4.有关线程的叙述正确的是()
A.可以获得对任何对象的互斥锁定
B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
C.线程通过使用synchronized关键字可获得对象的互斥锁定
D.线程调度算法是平台独立的
正确答案:CD
C. 正确。线程可以通过使用
synchronized
关键字来获取对象的互斥锁。当一个线程访问某个对象的synchronized
方法或者同步代码块时,它会自动获得该对象的锁。其他任何线程都无法同时访问该对象的任何synchronized
方法或同步代码块,直到锁被释放。D. 正确。线程调度算法通常是平台相关的,不同的操作系统可能有不同的线程调度策略。例如,有些系统采用时间片轮转调度,而有些系统则采用优先级调度等。因此,线程调度算法并不是跨平台独立的。
A. 错误。虽然理论上可以通过持有一个对象的锁来阻止其他线程访问该对象的任何方法,但这并不是互斥锁的标准用法。互斥锁通常用于同步访问共享资源,而不是对任何对象进行互斥锁定。
B. 错误。通过继承
Thread
类或实现Runnable
接口,可以创建线程,但这与获取类中方法的互斥锁没有直接关系。synchronized
关键字是用来控制对共享资源的访问,而不是用来控制对类方法的访问。正确答案是CD。