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

标签 java

<分区>

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

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 - Spring - 将图像作为字节数组存储在数据库中并检索它们

java - 如何使用 Java 测试一个点是否在具有纬度/经度和半径的区域内?

java - 如何根据Java中的值从字符串中获取特定字符?

java - 使用 Java 将 JSON 元素附加到文件中的 JSON 数组

c# - 图表控件中的多个图表系列

java - 如何使用 BouncyCaSTLe 获取根 CA 和最终实体之间的证书路径?

java - Log4j FileAppender 重新创建已删除的文件

java - 使用 Google 以及 Spring Security 和 Spring Social 登录

eclipse 中的 java.lang.UnsupportedClassVersionError

java - spring httpinvokerserviceexporter 客户端必须在同一个框架上吗?