1.
HashMap map=new HashMap();
map.put("name", null);
map.put("name", "cindy");
System.out.println(map.size());
问,输出的size是多少?
分析:这个明显考的是map接口的实现类HashMap的细节。而我忽略了,或者说平时没有注意。
正确答案是1。
接下来,让我们来弄清楚。
我编了这样一个程序。
public static void main(String[] args) {
HashMap map=new HashMap();
map.put("name", null);
map.put("name", "cindy");
map.put("name","Tom" );
System.out.println( map.get("name"));
System.out.println(map.containsKey("name"));
System.out.println(map.size());
}输出结果是:
Tom
true
1
这说明了,只要HashMap中元素的key 相同,那么后来添加的这个相同key的条目会覆盖之前的。而且算一条项目。原来的那个就不见了,相当于替换了。
我再次验证一下:我改了一下测试程序,
HashMap map=new HashMap();
map.put("name", null);
//map.put("name", "cindy");
//map.put("name","Tom" );
map.put(null, "hello");
System.out.println( map.get("name"));
System.out.println(map.containsKey("name"));
System.out.println(map.size());说明hashMap是允许value为null的,而且也是允许key也是null。
最后综合检测:
HashMap map=new HashMap();
map.put("name", null);
map.put("name", "cindy");
map.put("name","Tom" );
map.put(null, "hello");
System.out.println( map.get("name"));
System.out.println(map.containsKey("name"));
System.out.println(map.size());
输出:
Tom
true
2
2.关于byte类型的数字相加问题:
byte b1=3;
byte b2=4;
byte b3,b4;
b3=b1+b2;
b4=b3+b2;问,b4等于多少或者说哪一句会报错?
结果是b3=b1+b2;会报错。
为什么呐?编译器显示报错信息如下:
不兼容的类型: 从int转换到byte可能会有损失。。。因为,虽然b1,b2是byte类型的,但是却是整数的值,相加按照整数int类型计算
。当声明b3的时候用int类型声明的时候,这时候不会报错。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/uniquewonderq/article/details/47426771