Java-选择题

  • 下面有关java类加载器,说法正确的是? ABCD

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来使用

解析:jvm classLoader architecture :

A、Bootstrap Class Loader/启动类加载器
主要负责jdk_home/lib目录下的核心 api 或 -Xboot class path 选项指定的jar包装入工作.

B、Extension Class Loader/扩展类加载器
主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作

C、System Class Loader/系统类加载器
主要负责java -class path/-Djava.class.path所指的目录下的类与jar包装入工作.

D、 User Custom Class Loader/用户自定义类加载器(java.lang.ClassLoader的子类)
在程序运行期间, 通过java.lang.Class Loader的子类动态加载class文件, 体现java动态实时类装入特性.

  • 下列程序中错误的有(ABCD)

A.public class Something {
void doSomething () {
private String s = “”;
int l = s.length();
}
}
答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

B. abstract class Something {
private abstract String doSomething ();
}
答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。

C.public class Something {
public int addOne(final int x) {
return ++x;
}
}
答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。

D.class Something {
final int i;
public void doSomething() {
System.out.println(“i = ” + i);
}
}
答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为”final int i = 0;”。

  • JAVA代码查错

1).abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}

错。abstract method必须以分号结尾,且不带花括号。

2).public class Something {
void doSomething () {
private String s = “”;
int l = s.length();
}
}

答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

3).abstract class Something {
private abstract String doSomething ();
}

答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。

4).public class Something {
public int addOne(final int x) {
return ++x;
}
}

这个比较明显。
答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。

5).public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
和上面的很相似,都是关于final的问题,这有错吗?
答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference
(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable
(成员变量),而o的reference并没有改变。

 

编程学习

Java-异或运算^

2020-9-19 16:52:51

编程学习

MySQL数据库的入门基本操作

2020-9-22 10:11:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索