1.以下哪些方法是Object类中的方法
A.clone()
B.toString()
C.wait()
D.finalize()
正确答案: A B C D
2.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
A.能编译通过,并正确运行
B.因为使用了未初始化的变量,所以不能编译通过
C.以错误的方式访问了静态方法
D.能编译通过,但因变量为null,不能正常运行
正确答案: A
分析:因为Test类的hello方法是静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!
3.java中下面哪些是Object类的方法()
A.notify()
B.notifyAll()
C.sleep()
D.wait()
正确答案: A B D
分析:在根类Object中包含一下方法:
- clone();
- equals();
- finalize();
- getClass();[align=left][/align]
- notify(),notifyAll();
- hashCode();
- toString();
- wait();
4.哪个正确
A.abstract类只能用来派生子类,不能用来创建abstract类的对象。
B.final类不但可以用来派生子类,也可以用来创建final类的对象。
C.abstract不能与final同时修饰一个类。
D.abstract类定义中可以没有abstract方法。
正确答案: A C D
分析:
A,抽象类和接口都不可以实例化。
B,final类不能被继承。
C,abstract不能和final共用修饰类。
D,抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。
注意:abstract是用来修饰类和方法的:
1. 修饰方法:abstract不能和private、final、static共用。
2. 修饰外部类:abstract不能和final、static共用。(外部类的访问修饰符只能是默认和public)
3. 修饰内部类:abstract不能和final共用。(内部类四种访问修饰符都可以修饰)
5.Hashtable 和 HashMap 的区别是:
A.Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口
B.HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
C.Hashtable 线程安全的,而 HashMap 是线程不安全的
D.Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
E.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
正确答案: B C D E
分析:
Hashtable:
(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
(2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。
(3)HashTable直接使用对象的hashCode。
HashMap:
(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。
(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。
(3)HashMap重新计算hash值
6.判断对错。List,Set,Map都继承自继承Collection接口。
A.对
B.错
正确答案: B
分析:
List,Set等集合对象都继承自Collection接口
Map是一个顶层结果,不继承自Collection接口
7.下面哪个关键字可以用于Java的构造方法上?
A.final
B.static
C.synchronized
D.native
E.None of these.
正确答案: E
分析:构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。
8.表达式(short)10/10.2*2运算后结果类型是()
A.short
B.int
C.double
D.float
正确答案: C
分析:强制类型转换的优先级高于+ - * /
9.建立Statement对象的作用是?
A.连接数据库
B.声明数据库
C.执行SQL语句
D.保存查询结果
正确答案: C
分析:
1、Statement对象用于执行不带参数的简单SQL语句。
2、Prepared Statement 对象用于执行预编译SQL语句。
3、Callable Statement对象用于执行对存储过程的调用。
10.指出下列程序运行的结果()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc
正确答案: B
分析:首先str="test ok" 使得change()中的str指向"test ok"这个常量字符串(也可以说这个字符串对象),根本的原因就是 由于java字符串对象是不能修改的,无法像数组一样可以在原来的地址上对数组的值进行修改。 但是原来的类中的str指向的还是 new String(" good" )这个对象,chs[0] = 'g',把原来chs[0]中的'a'改为'g'。
11.下面论述正确的是()?
A.如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值
B.如果a,b的hashcode相同,那么a.equals(b)必须返回true
C.对于一个类,其所有对象的hashcode必须不同
D.如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同
正确答案: D
分析:
equals()相等的两个对象hashCode()一定相等。
hashCode()相等的两个对象equal()不一定相等。
12.下列哪些操作会使线程释放锁资源?
A.sleep()
B.wait()
C.join()
D.yield()
正确答案: B C
分析:
1.sleep会使当前线程睡眠指定时间,不释放锁
2.yield会使当前线程重回到可执行状态,等待cpu的调度,不释放锁
3.wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态
4.当前线程调用 某线程.join()时会使当前线程等待某线程执行完毕再结束,底层调用了wait,释放锁
13.下面的switch语句中,x可以是哪些类型的数据:()
1 2 3 4 5 |
|
A.long
B.char
C.float
D.byte
E.double
F.String
正确答案: B D F
分析:
jdk1.7之前byte,short ,int ,char
jdk1.7之后加入String
14.final、finally和finalize的区别中,下述说法正确的有?
A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
B.finally是异常处理语句结构的一部分,表示总是执行。
C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。
正确答案: A B C
分析:看下面这个例子:
public class Test { public static void main(String[] args) { final MyClass myClass = new MyClass(); System.out.println(++myClass.i); } } class MyClass { public int i = 0; }
这段代码可以顺利编译通过并且有输出结果,输出结果为1。这说明引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。
|
15.默认类型等价表示是哪一项:
A.public String NAME="default";
B.public static String NAME="default";
C.public static final String NAME="default";
D.private String NAME="default";
正确答案: C
分析:接口中的变量默认是public static final 的,方法默认是public abstract 的
16.关于volatile关键字,下列描述不正确的是?
A.用volatile修饰的变量,每次更新对其他线程都是立即可见的。
B.对volatile变量的操作是原子性的。
C.对volatile变量的操作不会造成阻塞。
D.不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
正确答案: B D
分析:所谓 volatile的措施,就是
1. 每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
2. volatile保证了其他线程的立即可见性,就没有保证原子性。
3.由于有些时候对 volatile的操作,不会被保存,说明不会造成阻塞。不可用与多线程环境下的计数器。
17.下列关于Java中类的构造方法的描述,正确的是()
A.构造方法的返回类型为void
B.可以定义一个类而在代码中不写构造方法。
C.在同一个类中定义的重载构造方法不可以相互调用。
D.子类不允许调用父类的构造方法。
正确答案: B
分析:
A、构造器没有返回值,这个没有返回值和返回值为void可不一样。
B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。
C、构造器可以重载,而且可以使用super()、this()相互调用
D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。
18.下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?
A.char a[][];
分析:char[][] 定义了二位字符数组。在Java中,使用字符串对char数组赋值,必须使用toCharArray()方法进行转换。所以A错误。
19.以下有关构造方法的说法,正确的是:()
A.一个类的构造方法可以有多个
B.构造方法在类定义时被调用
C.构造方法只能由对象中的其他方法调用
D.构造方法可以和类同名,也可以和类名不同
正确答案: A
分析:
A选项是函数重载的体现,一个类可以有多个参数列表不同的构造方法。A选项正确。
B选项,构造方法在对象被初始化时调用。B选项错误。
C选项,构造方法只能在对象被初始化时调用,不能由其他方法调用。
D选项,构造方法必须与类名相同。
20.下面代码的运行结果是( )
1 2 3 4 5 6 |
|
A.null
B.0
C.编译出错
D.运行出错
正确答案: C
分析:在static方法中是不能访问非静态变量 a 的,需要将 a 声明为static,答案才会是 0 ,否则是编译出错
21.有如下4条语句:()
1 2 3 4 |
|
以下输出结果为false的是:
A.System.out.println(i01==i02);
B.System.out.println(i01==i03);
C.System.out.println(i03==i04);
D.System.out.println(i02==i04);
正确答案: C
分析:①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
22.
正确答案:261345
23.java中关于继承的描述正确的是()
- A、
一个子类只能继承一个父类
- B、
继承具有传递性
- C、
子类可以继承父类的构造方法
- D、
父类一般具有通用性,子类更具体
分析:子类无法继承父类的构造方法,但是可以调用父类的构造方法。