1、关键字()表明一个对象或变量的引用在初始化后不能被修改。
A.private
B.final
C.static
D.没有这种关键字
答案B
解析:
final修饰的变量内容是不能修改的,如果final修饰一个对象的引用,那么指的是这个对象的地址值是无法改变的,对象的内容还是可以修改的。如果final修饰一个普通变量的话,就是变量的值无法修改。综上,final修饰变量的本质就是:修饰的变量值(地址或内容)无法改变。
2、一个抽象类并不需要其中所有的方法都是抽象的。()
A.正确
B.错误
答案A
解析:
1)抽象类可以包括抽象方法和非抽象方法
2)如果类里面有抽象方法的话,那么类一定要声明为抽象的!
3、下列关于Java中类的构造方法的描述,正确的是()
A.构造方法的返回类型为void
B.可以定义一个类而在代码中不写构造方法。
C.在同一个类中定义的重载构造方法不可以相互调用。
D.子类不允许调用父类的构造方法。
答案B
解析:
A、构造器没有返回值,这个没有返回值和返回值为void可部一样。
B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。
C、构造器可以重载,而且可以使用super()、this()相互调用
D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。
5.下面的方法,当输入为2的时候返回值是多少?
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A.0
B.2
C.4
D.10
解析 当i=2时,执行程序
Case2:result=4;
Case3:result=4+6=10;
没有Break,就会顺序执行下去
6、DK中提供的java、javac、jar等开发工具也是用Java编写的。()
A.对
B.错
答案A
以下哪些内存区域属于JVM规范?()
A.方法区
B.实例变量
C.静态变量
D.程序计数器
E.虚拟机栈
答案ADE
解析:
JVM内存区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(包括常量池)。
不属于JVM内存区:直接内存(Direct Memory),用户I/O操作
8、以下关于对象序列化描述正确的是()
A.使用FileOutputStream可以将对象进行传输
B.使用PrintWriter可以将对象进行传输
C.使用transient修饰的变量不会被序列化
D.对象序列化的所属类需要实现Serializable接口
答案CD
解析:
在Java中,对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。
9、下面关于Applet的说法是正确的是()
A.Applet可以在带有Java解释器的浏览器中运行
B.Applet类必须继承java.applet.Applet
C.Applet可以访问本地文件
D.Applet是Object类的子类
答案ABCD
10.java如何返回request范围内存在的对象?
request.getRequestURL()
request.getAttribute()
request.getParameter()
request.getWriter()
答案C
解析:request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。getAttribute是返回对象,getParameter返回字符串。
11.下列程序的运行结果
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print(“ping”);
}
static void pong() {
System.out.print(“pong”);
}
pingpong
pongping
pingpong和pongping都有可能
都不输出
答案pongping
12.下列语句哪一个是不正确的()
Log4j支持按分钟为间隔生成新的日志文件
Log4j是一个打印日志用的组件
Log4j支持按年为间隔生成新的日志文件
Log4j的日志打印级别可以在运行时重新设置
答案D
解析:日志的级别之间的大小关系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF Log4j建议只使用四个级别,优先级从高到低分别是 ERROR > WARN > INFO > DEBUG。 log4j在运行期间是不可以重新设置的。
13.下列说法正确的有()
能被java.exe成功运行的java class文件必须有main()方法
J2SDK就是Java API
Appletviewer.exe可利用jar选项运行.jar文件
能被Appletviewer成功运行的java class文件必须有main()方法
答案A
14.下列关于一个类的静态成员的描述中,不正确的是()
该类的对象共享其静态成员变量的值
静态成员变量可被该类的所有方法访问
该类的静态方法能访问该类的静态成员变量
该类的静态数据成员变量的值不可修改
答案C
解析: 静态数据成员变量的值可以修改。
15.以下程序的输出结果是
class Print{
static boolean out(char c){
System.out.println©;
return true;
}
public static void main(String[] argv){
int i = 0;
for(out(‘A’);out(‘B’) && (i<2);out(‘C’)){
i++;
out(‘D’);
}
}
}
答案ABDCBDCB解析:先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)
16.下列说法正确的是
A.在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法可直接调用
C.在类方法中只能调用本类的类方法
D.在类方法中绝对不能调用实例方法
答案B解析:在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法
17.类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2。( )
正确
错误
答案正确解析:public:可以被所有其他类所访问
private:只能被自己访问和修改
protected:自身、子类及同一个包中类可以访问
default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。
19.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?
A.CountDownLatch
B.CyclicBarrier
C.Semaphore
D.Future
答案B解析CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。
CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。
20.what is the result of the following code?
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);
}
}
Compiles fine and output is prints”It is a account type”once followed by”FIXED”
Compiles fine and output is prints”It is a account type”twice followed by”FIXED”
Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”
Compiles fine and output is prints”It is a account type”four times followed by”FIXED”
Compilation fails
答案c解析:枚举类有三个实例,故调用三次构造方法,打印三次It is a account type
21.Java类Demo中存在方法func0、func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )
public class Demo{
float func0()
{
byte i=1;
return i;
}
float func1()
{
int i=1;
return;
}
float func2()
{
short i=2;
return i;
}
float func3()
{
long i=3;
return i;
}
float func4()
{
double i=4;
return i;
}
}
func1
func2
func3
func4
答案AD解析:A:return; 没有返回值,错误
B:short → float 无须强制转换,正确
22.关于volatile关键字,下列描述不正确的是
用volatile修饰的变量,每次更新对其他线程都是立即可见的。
对volatile变量的操作是原子性的。
对volatile变量的操作不会造成阻塞。
不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
答案BD解析:所谓 volatile的措施,就是
- 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
- volatile保证了其他线程的立即可见性,就没有保证原子性。
3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。
23.以下代码将打印出()
public static void main (String[] args) {
String classFile = “com.jd.”. replaceAll(".", “/”) + “MyClass.class”;
System.out.println(classFile);
}
com. jd
com/jd/MyClass.class
///MyClass.class
com.jd.MyClass
解析:C.由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/"。如果想替换的只是".",那么就要写成"\."。
24.下面哪些语法结构是正确的?
public class A extends B implements C
public class A implements A B
public class A implements B,C,D
public implements B
解析:
A选项- 标准写法,正确
public class A extends B implements C
B选项- implements接的是接口类 而A此处的定义又是class
循环矛盾,必然错误public class A implements A B
C选项- 正确,一个类可以实现多个接口(但是题目拼写有误- -)
public class A implements B,C,D
D选项- 错误。public implements B
26.关于类的叙述正确的是()。
在类中定义的变量称为类的成员变量,在别的类中可以直接使用
局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
使用别的类的方法仅仅需要引用方法的名字即可
只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
答案B解析:A在类中定义的变量称为类的成员变量,在别的类中不可以直接使用局部变量的
C使用别的类的方法需要通过该类的对象引用方法的名字
D只要没有定义任何构造函数,JVM都会为类生成一个默认构造函数
27.Java的Daemon线程,setDaemon( )设置必须要?
在start之前
在start之后
前后都可以
答案A解析:setDaemon()方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。
28.下面的程序将来打印什么?()
public class TestIncr {
public static void main(String args[]) {
int i = 0;
i = i++ + i;
System.out.println(“I =” +i);
}
}
I = 1
I = 2
I = 3
编译出错
答案A
29.public class contained in a Java program file must have the same name as the file, except for the extension “.java”.
FALSE
TRUE
答案A
30.以下描述正确的是
CallableStatement是PreparedStatement的父接口
PreparedStatement是CallableStatement的父接口
CallableStatement是Statement的父接口
PreparedStatement是Statement的父接口
答案B