gpt4 book ai didi

使用 Set 的 Java 代码显示奇怪的输出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:38 25 4
gpt4 key购买 nike

按照我的逻辑,下面代码的输出应该是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 类型。

这在 Java 语言规范中有描述,here .

Binary numeric promotion is performed on the operands (§5.6.2).

int 值然后得到 boxedInteger 以便用作 Set#remove(Object) 的参数。

remove(Object) 方法然后使用此 Integer 对象与 Set 中的元素进行比较,使用 Object#等于(对象)。但是没有 Short 等于 Integer 也没有 Integer 等于 。因此,不会删除任何内容。

关于使用 Set 的 Java 代码显示奇怪的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26291418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com