java - 为什么这段java代码可以编译

标签 java syntax compiler-errors

我遇到了这段代码

public class Main {
    static int someint;

    public static void main(String[] args) {
        someint = -0;
        print();
    }

    private static int print()
    {
        System.out.println(someint);
        return someint;
    }

}

当我运行它时打印 -0

我只是好奇 -0 如何是一个合法的整数值

最佳答案

因为“-”是一元否定运算符,适用于包括 0 在内的所有数字,即使它根本不影响 0

参见BNF Java 规则:

numeric_expression  = 
 (  (  "-" 
 /  "++" 
 /  "--"  ) 
expression ) ...

有趣的是,-0.00.0不同

关于java - 为什么这段java代码可以编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16590134/

相关文章:

syntax - 有哪些基于文件的Smalltalks语法?

java - 当从导出的 .jar 运行时,扫描仪会随机停止读取,但从 Eclipse 运行时则不会

Java ActionListener 历史记录

java - 如何让 Spring RabbitMQ 创建一个新队列?

java - 整数和字符串比较在优化上有什么区别吗?

powershell - 测试PSCustomObject的属性时,为什么操作数的顺序很重要

c++ - 定义将对内存进行操作的函数时,将地址传递为 void* 还是 uint8* 更正确?

curl - 使用curlpp编译时出错

java - “找不到符号”或“无法解析符号”错误是什么意思?

java - 列表/界面问题