1、为将数组myArray的长度由3改为6,现采取以下编码:
int[] myArray=new int[3];
myArray=new int[6];
代码执行后,以下叙述哪项是正确的?
A.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素
的值为空。
B.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素
需再经过初始化后才能使用。
C.数组myArray的长度没有变化。
D.数组myArray的长度已由3改为6,原来3个元素的值全部丢失。
答案:[D]
解析:myArray被声明为一个int类型的数组。new int[6] 会在内存中重新开辟一块给它,原来的int[3]孤零零地等待被回收。是不是找到了高中做题时候的快感。。。
2、下列数据中,不能作为switch(条件)的是( )。
A.a = 1 B.a = 1.0
C. a = 1/2 D.a = ‘a’
答案:[B]
解析:switch(exp),在JDK7之前,只能是byte、short、char、int或对应的包装类,或者枚举常量(内部也是由整型或字符类型实现)。
为什么必须是这些呢,因为其实exp只是对int型支持的,其他都是因为可以自动拆卸或者自动向上转型到int,所以才可以。
到了JDK7,String被引入了,为什么String能被引入呢?
其实本质上还是对int类型值得匹配。程序调用了String对象的hashCode方法,得到一个int型的hash值,唯一标识这个case。当匹配时,查看这些哈希值,如果没有匹配成功,就说明不存在;如果匹配成功了,接着会调用字符串的equals方法进行匹配。(补充:hash值一致,equals不一定返回true)。
所以,exp不能为null,case子句使用的字符串也不能为null,不然会出现空指针异常。
3、操作题(hashmap专题)
1. 定义5个person对象,用其名字作为key,对象作为value,放入hashmap
2. 从上述字典中,删除key长度大于5的对象 (这是重点)
解析:hashmap删除的详解