我面对面试问题。
以下代码的输出是什么。
package com.demo;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<Short> set=new HashSet<Short>();
for (short i = 0; i < 10; i++){
set.add(i);
set.remove(i-1);
}
System.out.println(set.size());
}
}
提供输出:10
但我很困惑为什么输出10。
任何人都可以回答我这里发生的事情。
由于
SItansu
答案 0 :(得分:5)
表达式i-1具有int类型并被自动装箱到Integer对象,因此程序将Short对象添加到集合中,然后尝试删除Integer对象。该集合没有Integer对象,因此不会删除任何内容。
答案 1 :(得分:5)
字面值1
的类型为int
。因此,值i - 1
的类型为int
,而short
的类型不是i
。您因此将Short
的盒装实例添加到集合中,但删除了Integer
的已装箱实例。 remove()
方法因此无法移除任何内容,因为Short
不等于Integer
。