![](/img/trans.png)
[英]Weird output is showing in console,trying to login through java in site
[英]Java code using Set showing weird output?
根据我的逻辑,以下代码的输出应为1。 但显示为100。 谁能解释我的问题在哪里?
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Set<Short> s=new HashSet<Short>();
for(Short i=0;i<100;i++){
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
答案在于装箱和自动装箱:
语句i-1的类型为int
而不是Short
类型。 方法remove()
接受类型为Object
的参数(不一定是集合的Generic类型)。 Java会将数字值自动装箱为整数。 在集合中找不到整数,因此不会将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.