1.
下列语句正确的是( )
正确答案: A 你的答案: A (正确)
形式参数可被视为local variable
形式参数可被所有的字段修饰符修饰
形式参数为方法被调用时,是真正被传递的参数
形式参数不可以是对象
A:形式参数可被视为local variable。形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。
B: 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。 一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。
C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引用皆在此列),也就是说真正被传递的是实参。
D:方法的参数列表指定要传递给方法什么样的信息,采用的都是对象的形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。想JAVA中任何传递对象的场合一样,这里传递的实际上也是引用,并且引用的类型必须正确。--《Thinking in JAVA》
2.
实现或继承了Collection接口的是()
正确答案: B C E 你的答案: A B E (错误)
Map
List
Vector
Iterator
Set
3.
类的析构函数是一个对象被( )时自动调用的。
正确答案: B 你的答案: B (正确)
建立
撤消
赋值
引用
java中有析构函数,但我们一般用不到它,因为java有自动内存回收机制,无需程序员来释放,也就不要担心内存泄露,只不过java中析构函数所采用的方式不是C++中的那样前加~号,在java中 对象析构时会调用void finalize()方法,因此你如果确实需要析构的话就可以为你写的类添加一个void finalize(){}方法,来完成你所需要的工作
4.
以下声明合法的是
正确答案: B 你的答案: 空 (错误)
default String s
public final static native int w( )
abstract double d
abstract final double hyperbolicCosine( )
A:java的访问权限有public、protected、private和default的,default不能修饰变量
C:普通变量不能用abstract修饰,abstract一般修饰方法和类
D:被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和改写的
心存疑问可以实验一下,看是否能通过编译
5.
列哪种说法是正确的( )
正确答案: D 你的答案: A (错误)
实例方法可直接调用超类的实例方法
实例方法可直接调用超类的类方法
实例方法可直接调用其他类的实例方法
实例方法可直接调用本类的类方法
6.
程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?
正确答案: C D 你的答案: C (错误)
Map map = new HashMap()
Map map = new TreeMap()
Map map = new ConcurrentHashMap();
Map map = Collections.synchronizedMap(new HashMap());
链接:https://www.nowcoder.com/questionTerminal/ac061529b516487b97cd35f61157d369
来源:牛客网
1. HashMap,TreeMap 未进行同步考虑,是线程不安全的。
2. HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。
3. Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,
List list = Collections.synchronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet());