Short类型的List contains(Byte.valueOf("1"))的问题
2017-01-16 19:58
295 查看
概述
最近测试人员发现了一个
如下代码:
这个时候用如下代码判断某个数字是否在
这个时候,代码始终无法输出
附带
可以看到
备注:写代码的时候还是要非常的小心和细心。
最近测试人员发现了一个
bug,我找了半天,一直找不到
bug的原因。后来
debug代码的时候,才发现一个隐藏的
bug。
如下代码:
private static List<Short> tempList = Arrays.asList(new Short [] {13,17,18,20});
这个时候用如下代码判断某个数字是否在
tempList中:
if (tempList.contains(Byte.valueOf("13"))) { System.out.println("xxxxxx"); }
这个时候,代码始终无法输出
xxxxxx这个字符串,原因是
tempList是
Short类型的
List,传入一个
Byte类型的对象进去后,虽然值是13,但是毕竟是
Short对象和
Byte对象之间的比较,比较的是两个对象的内存地址,所以一直不相等。代码要如下修改:
if (tempList.contains(Short.valueOf("13"))) { System.out.println("xxxxxx"); }
附带
ArrayList contains源代码:
可以看到
ArrayList的
contains方法就是使用对象的
equals方法来进行比较的。
备注:写代码的时候还是要非常的小心和细心。
相关文章推荐
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- java-int&short-byte类型转换问题
- byte或short类型在左移时应注意的问题
- char/byte/short类型的加法和类型转换问题
- 测试整数类型:byte,short,int,long。以及进制之间的转换问题
- C# 类型 byte,int,short,long,decimal,double,float
- "JVM terminated. Exit code=-1"问题的解决方法
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- java中byte[]转换成String类型的问题
- "c++ list", c++链表遇上的问题
- ABAP中接收.NET语言byte[]类型返回值问题
- java中byte[]转换成String类型的问题
- boolean类型的字段值在DataGrid里显示值为"-1"与"0",怎么样才能让他显示:Ture或false
- 关于保存*.js是出现some character can not mapped using "iso-8859-1" 的问题解决见解
- 解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题
- 解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题
- 解决SharePoint中自定义新增和编辑List的页面时"增加附件"工作栏不能使用的问题
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- 运行ASP.NET出现的问题:无法直接启动带有"类型输出类型"的项目
- C# 类型 byte,int,short,long,decimal,double,float