首页 > 代码库 > 360在线笔试---反思两道题
360在线笔试---反思两道题
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());
null
true
2
说明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类型声明的时候,这时候不会报错。
360在线笔试---反思两道题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。