小编Sun*_*nny的帖子

i的值(i == -i && i!= 0)在Java中返回true

我有以下if情况.

if (i == -i && i != 0)
Run Code Online (Sandbox Code Playgroud)

在Java中,这个条件i会返回什么值true

我无法想到在Java 中i考虑两个补码表示法的任何这样的价值.

我还希望得到这种情况的任何答案的代数证明(在Java的上下文中)?

java

100
推荐指数
5
解决办法
3749
查看次数

为什么这段代码会产生死锁?

class A {
    static final int i;
    static {
        i = 128;

        Thread t = new Thread() {
            public void run() {
                System.out.println("i=" + i);
            }
        };
        t.start();
        try {
           t.join();
        } catch (InterruptedException e) {
           Thread.currentThread().interrupt();
        }
    }
}
public class MainTesting {


    public static void main(String[] args) {
        A a = new A();
        System.out.println("finish");
    }
}
Run Code Online (Sandbox Code Playgroud)

我永远不会得到finish印刷和我的价值.为什么会这样?

java multithreading

11
推荐指数
2
解决办法
704
查看次数

为什么这个用于添加的代码(使用按位运算)在java中有效

public int add(int a, int b){  
        while (b != 0){
            int carry = (a & b) ;

            a = a ^ b; 

            b = carry << 1;
        }
        return a;
 }
Run Code Online (Sandbox Code Playgroud)

这是使用按位运算计算两个整数之和的代码.

如果我手动/编程计算,我看它适用于每个整数.但我无法弄清楚a和的中间值之间的任何关系carry.为什么进位乘以2指定b

PS:我在这里找到了一个答案 Bitwise Multiply和Add in Java 但这是用于乘法而不是用于加法.

java bit-manipulation bitwise-operators

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