相关疑难解决方法(0)

如何正确比较Java中的两个整数?

我知道,如果你将盒装原始Integer与常量进行比较,例如:

Integer a = 4;
if (a < 5)
Run Code Online (Sandbox Code Playgroud)

a 将自动取消装箱,比较将起作用.

但是,当您比较两个盒装Integers并希望比较相等或小于/大于?时会发生什么?

Integer a = 4;
Integer b = 5;

if (a == b)
Run Code Online (Sandbox Code Playgroud)

以上代码是否会导致检查它们是否是同一个对象,还是会在这种情况下自动取消装箱?

关于什么:

Integer a = 4;
Integer b = 5;

if (a < b)
Run Code Online (Sandbox Code Playgroud)

java autoboxing integer

196
推荐指数
7
解决办法
35万
查看次数

用 == 比较 Integer 和 int

List<Integer> test = List.of(955, 955);
if (test.get(1) == test.get(0))
...
Run Code Online (Sandbox Code Playgroud)

以上条件导致 false

List<Integer> test = List.of(955, 955);
int a = test.get(1);
int b = test.get(0);
if (a == b)
...
Run Code Online (Sandbox Code Playgroud)

上述条件返回true

为什么会这样?片段之间有什么区别?

java autoboxing unboxing integer wrapper

4
推荐指数
1
解决办法
117
查看次数

为什么Integer.MIN_VALUE不等于变量中存储的Integer.MIN_VALUE?

我用以下字段创建了一个Interval类:

...
private static final Integer MINF = Integer.MIN_VALUE;
Integer head,tail;
...
Run Code Online (Sandbox Code Playgroud)

当我创建这个类的实例,制作this.head = Integer.MIN_VALUE,并且我想检查head的值是否相等时MINF,它表示它们不相等.

Interval i = new Interval(Integer.MIN_VALUE,10);
System.out.println(i.toString()); //[-2147483648,10]
Run Code Online (Sandbox Code Playgroud)

所以我继续尝试打印这些值,

public String toString() { 
    ...
    //What the hell?
    System.out.println("MINF == Integer.MIN_VALUE: " + (MINF == Integer.MIN_VALUE)); //true
    System.out.println("MINF == this.head: " + (MINF == this.head)); //false
    System.out.println("Integer.MIN_VALUE == this.head: " + (Integer.MIN_VALUE == this.head)); //true
    ...
    return "*insert interval in format*";
} 
Run Code Online (Sandbox Code Playgroud)

哪个说

MINF == Integer.MIN_VALUE真的

MINF == this.head虽然是假的 …

java integer minimum

1
推荐指数
2
解决办法
131
查看次数

标签 统计

integer ×3

java ×3

autoboxing ×2

minimum ×1

unboxing ×1

wrapper ×1