gpt4 book ai didi

java - 为什么 Java 在两个不同的环境中给我两个不同的错误,即使(简单)代码是相同的?

转载 作者:行者123 更新时间:2023-12-02 11:12:24 25 4
gpt4 key购买 nike

我有这个简单的代码:

公共(public)类主要{

公共(public)静态无效主要(字符串[]参数){

字节 a = 10, b = 20, c = a+b;

System.out.println(a);

}

}

这当然是一个错误。但是,如果我使用在线编辑器(例如 JDoodle)编译代码,我会得到这个输入,这是我所期望的:

错误:不兼容的类型:从 int 到 byte 的可能有损转换
字节 a = 10, b = 20, c = a+b;
^
1 个错误

否则,如果我使用 Eclipse (2018-12) + JDK 编译代码:

java版本“1.8.0_231”
Java(TM) SE 运行时环境 (build 1.8.0_231-b11)
Java HotSpot(TM) 64 位服务器 VM(内部版本 25.231-b11,混合模式)

我得到这个不同的错误:

Unresolved 编译问题:
类型不匹配:无法从 int 转换为 byte

这怎么可能?我认为第一个错误是正确的(预期的)行为。我应该认为我的jdk有问题吗?

最佳答案

Java 语言规范没有规定特定的错误消息。规范简单地说(所有示例来自 JLS Chapter 14,但类似的示例可以在整个规范中找到):

It is a compile-time error if final appears more than once as a modifier for a local variable declaration.

It is a compile-time error if T is the null type.

It is a compile-time error if the name of a label of a labeled statement is used within the scope of the label as a label of another labeled statement.



生成编译器错误的具体规则在 JLS 15.26.1 中。 :

If the type of the right-hand operand is not assignment compatible with the type of the variable (§5.2), then a compile-time error occurs.



编译器实现者可以自由放置他们认为有用的任何信息。算你幸运,他们不只是说: Erk! .

关于java - 为什么 Java 在两个不同的环境中给我两个不同的错误,即使(简单)代码是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60165248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com