【Java自动拆箱的一个小纰漏】
来源:互联网 发布:mac usb没反应 编辑:程序博客网 时间:2024/04/30 05:09
自从有了范型,Java的容器操作便利了不少,但因为还存在int,float这里原始数据类型而磨合得还不够好.
例如下面的这个小例子:
Map<String,Integer> map=new HashMap<String,Integer>();
map.put("1",1);
System.out.println(map.get("2"));
实际上map中并没有键为"2"的值,不过代码运行正常,输出为
null
现在来做一点小改动,
Map<String,Integer> map=new HashMap<String,Integer>();
map.put("1",1);
int i=map.get("2");
System.out.println(i);
注意到只是用中间变量i暂时存放了一下取出的值,这个时候就会报错啦:
Exception in thread "main" java.lang.NullPointerException
仔细想想倒也觉得错得在理,因为不存在的对象可以以null来表示,但不存在windows xp系统下载的数字在Java中却没有对应的表示(例如Ruby中就有NAN,表示这不是一个数字)。乍看之下好像也没什么大不了,但是这样的小缺陷使得在Java编程中想像一般类型一样的来使用数字和容器变得不太可能,如果用一个容器来做数字的存取,则只能在取之前很小心的先查看使用的键值对是否已经在容器中,而不能像一般对象的存取那样,直接取出,通过结果来判断罢了。
发现这个小纰漏仅在偶然间,JDK的文档我看得不多,也许SUN的工程师早就在哪里提醒过大家了吧,只是我孤陋寡闻而已,大家看着玩玩。
- 【Java自动拆箱的一个小纰漏】
- java中自动拆箱和装箱的小细节
- Java多区域部署时能自动升级的一个小演示程序
- Java的一个小陷阱
- 一个java的小项目
- java的一个小程序
- Java的一个小程序
- 一个java的小问题
- java的自动装箱自动拆箱
- 跨国公司又出大纰漏,微软的两个中国
- 连线:iPhone研发不为人知的故事 原型机纰漏百出
- 【java】java异常的一个小练习
- 收藏一个关于ORACLE自动启动的小技巧
- 一个自动删除闲置过久文件的小程序
- 一个自动去除行尾多余空白的小插件
- 关于jquery ajax自动完成的一个小例子
- 从一个 NullPointerException 探究 Java 的自动装箱拆箱机制
- 一个简单的 Java 自动批处理队列
- linux内核中抽取的crc16的算法
- NULL
- crash files command
- observer观察者模式
- 关于JavaIO流InputStream和OutputStream的获取方法
- 【Java自动拆箱的一个小纰漏】
- 北大ACM 1003 Hangover
- Finding crosses(hdu4414,枚举)
- 我想找个师傅
- 生成随机文本
- 演示集线器的入侵--视频学习笔记
- 谈谈中国“故事”
- hdu4500 小Q系列故事——屌丝的逆袭
- C#代码与javaScript函数的相互调用