java - 为什么 "int i = (byte) + (char) - (int) + (long) - 1"是 1?

原文 标签 java

这个问题在这里已经有了答案:





Weird java behavior with casts to primitive types

(3 个回答)


7年前关闭。




我在互联网上偶然发现了这段代码

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int i = (byte) + (char) - (int) + (long) - 1;
        System.out.println(i);

    }

}

它打印 1 .

我能知道为什么吗?

这是来源--> http://www.javacodegeeks.com/2011/10/weird-funny-java.html

最佳答案

int i = (byte) + (char) - (int) + (long) - 1;
            ^-------^--------^-------^ Type casting
+ - + -正在为数字分配符号( Unary Operators ),因此 -然后 +然后 -最后 +给你1 .

如果我们只是忽略类型转换,我们有 (+(-(+(-(1)))))=1
等效代码:

long a = (long) - 1;
int b = (int) + a;
char c = (char) - b;
int finalAns = (byte) + c;
System.out.println(finalAns); // gives 1

关于java - 为什么 "int i = (byte) + (char) - (int) + (long) - 1"是 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781960/

相关文章:

java - 字符串java regex中的多个反斜杠

java - 获得素数的Array和ArrayList有什么区别?

java - (Android Studio Java)如何修复错误:找不到用户0的提供程序;期望为此授权机构找到有效的ContentProvider

java - String valueOf 与空字符串的连接

java - 当可滚动的recyclerView仅占据手机屏幕的一半时,如何使 Activity 中的整个屏幕滚动

java - 在第1行上将JOIN issuedevices AS sm ON sd.DeviceID = sm.DeviceID'

java - 从Window应用程序访问露天文档

java - Android后台服务最佳做法

java - 在Java 8中合并 try catch

java - 为什么在Singleton类的情况下,双重检查锁定不会失败?