相关疑难解决方法(0)

Java中的整数比较

在Java中整数比较是棘手的,因为intInteger表现不同.我得到那个部分.

但是,正如此示例程序所示,(Integer)400 (第4行)的行为与(Integer)5 (第3行)不同.为什么是这样??

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.out.format("1. 5              == 5            : %b\n", 5 == 5);
        System.out.format("2. (int)5         == (int)5       : %b\n", (int)5 == (int)5);
        System.out.format("3. (Integer)5     == (Integer)5   : %b\n", (Integer)5 == (Integer)5);
        System.out.format("4. (Integer)400   == (Integer)400 : %b\n", (Integer)400 == (Integer)400);
        System.out.format("5. new Integer(5) == (Integer)5   : %b\n", new Integer(5) == (Integer)5); …
Run Code Online (Sandbox Code Playgroud)

java boxing equality

4
推荐指数
2
解决办法
475
查看次数

Java中Wrapper类的行为

可能重复:
为什么128 == 128返回false但127 == 127在此代码中返回true?

下面的Java代码返回true

Integer i1=1;
Integer i2=1;
System.out.println(i1==i2);
Run Code Online (Sandbox Code Playgroud)

那么我们在Java中使用String文字常量池的概念的方式,在Java中包装类的情况下我们是否也有类似的概念?

java wrapper

3
推荐指数
1
解决办法
1437
查看次数

比较2个整数,奇怪的行为

我写了简单的代码:

public static void main(String[] args) {
    Integer i1 = 127;
    Integer i2 = 127;
    boolean flag1 = i1 == i2;
    System.out.println(flag1);

    Integer i3 = 128;
    Integer i4 = 128;
    boolean flag2 = i3 == i4;
    System.out.println(flag2);
}
Run Code Online (Sandbox Code Playgroud)

但是,奇怪的是,结果如下:

true
false
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么会出现这种差异吗?

java

3
推荐指数
1
解决办法
154
查看次数

Java中为什么(整数)222!=(整数)222?

这是正确的(Integer) 1 == (Integer) 1,这似乎是合法的.

那么为什么它要进行(Integer) 222平等游览 呢?

java integer equality equals

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

布尔值会自动装箱到同一个实例吗?

布尔值会自动装箱到同一个实例吗?

我有一个小测试表明确实如此,但我不会对此下任何赌注。有保证吗?

    @Test
    public void autoboxBooleans() {
        Multimap<Boolean, Integer> ids = HashMultimap.create();

        for (int i = 0; i < 10; i++) {
            Boolean rand = ThreadLocalRandom.current().nextBoolean();
            ids.put(rand, System.identityHashCode(rand));
        }

        System.out.println(ids); // {false=[453523494], true=[2024918163]}
    }
Run Code Online (Sandbox Code Playgroud)

注意这个问题讨论的是 0-127 范围之外的整数。

java autoboxing

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

为什么比较两个整数使用==有时工作,有时不工作?

我知道我正在比较参考,而我正在使用==这不是一个好主意,但我不明白为什么会发生这种情况.

Integer a=100;
Integer b=100;
Integer c=500;
Integer d=500;
System.out.println(a == b); //true
System.out.println(a.equals(b)); //true
System.out.println(c == d); //false
System.out.println(c.equals(d)); //true
Run Code Online (Sandbox Code Playgroud)

java comparison types

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

我在Java Stack类中发现了一个错误吗?为什么这两个堆栈元素不一样?

我使用Java Stack遇到了一个非常棘手的问题.

Stack<Integer> s=new Stack(), ss=new Stack();
s.push(1024);  ss.push(1024);
System.out.println(s.peek());
System.out.println(ss.peek());
System.out.println((s.peek()==ss.peek()));
System.out.println((s.peek()<ss.peek()));
System.out.println((s.peek()<=ss.peek()));
System.out.println((s.peek()!=ss.peek()));
Run Code Online (Sandbox Code Playgroud)

见上面的代码.但为什么输出是这样的?

1024
1024
false
false
true
true
Run Code Online (Sandbox Code Playgroud)

这是Java中的错误吗?有人帮忙....谢谢,凯

java stack peek

0
推荐指数
1
解决办法
79
查看次数

比较128下的2整数

    Integer a = 127;
    Integer b = 127;
    System.out.println(a == b);
Run Code Online (Sandbox Code Playgroud)

结果是真的,但是:

    Integer a = 128;
    Integer b = 128;
    System.out.println(a == b);
Run Code Online (Sandbox Code Playgroud)

结果是错误的.为什么?

java

0
推荐指数
1
解决办法
145
查看次数

怎么可能127 == 127而128!= 128?

Integer v1_1 = 127;
Integer v1_2 = 127;

Integer v2_1 = 128;
Integer v2_2 = 128;

System.out.println(v1_1 == v1_2);//true
System.out.println(v2_1 == v2_2);//false
Run Code Online (Sandbox Code Playgroud)

为什么第二个表达是假的

我无法弄清楚价值如何影响比较结果.

java

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

标签 统计

java ×9

equality ×2

autoboxing ×1

boxing ×1

comparison ×1

equals ×1

integer ×1

peek ×1

stack ×1

types ×1

wrapper ×1