我面临下面的面试问题。
下面代码的输出是什么?
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
发布于 2015-10-30 06:54:59
文字值1为int类型。因此,i - 1值是int类型的,而不是short类型的i值。这样,您就可以将Short的装箱实例添加到集合中,但移除Integer的装箱实例。因此,remove()方法不移除任何内容,因为Short不等于Integer。
发布于 2015-10-30 06:54:55
表达式i-1具有int类型,并自动装箱到Integer对象,因此程序将向集合中添加短对象,然后尝试删除Integer对象。集合没有Integer对象,因此不会删除任何内容。
https://stackoverflow.com/questions/33430239
复制相似问题