遇到一个错误地使用 =+
而不是 +=
在其代码中的人,它没有显示为编译错误。
是因为
int a =+ 2;
是相同的
int a = 0 + 2;
?
没有编译错误,因为+
它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同-
:
int x = +1;
int y = -1;
Java语言规范中的相关部分是Unary
Plus运算符+(第15.15.3节)
。它指定调用一元+
运算会导致操作数的一元数值提升(第5.6.1节)。这意味着:
* 如果操作数是编译时类型的
Byte
,Short
,Character
,或Integer
,将其进行取消装箱转换(§5.1.8)。然后,int
通过扩展原始转换(第5.1.2节)或身份转换(第5.1.1节),将结果提升为类型值。* 否则,如果操作数是编译时类型的
Long
,Float
或者Double
,对它进行解包转换(§5.1.8)。* 否则,如果操作数是,或的编译时类型
byte
,则通过扩展原语转换(第5.1.2节)将其提升为类型的值。short``char``int
- 否则,一元数值操作数将保持不变,并且不会被转换。
无论如何,都将应用值集转换(第5.1.13节)。
简而言之,这意味着
int
将 扩展 为int
。我尝试在编译器中运行此代码,它给出了“circle”的输出: 我没有将打印功能设置为虚拟,但它仍然具有相同的效果。这有什么原因吗?
根据SQL字符串组合文档,我想在postgresql数据库中执行DELETE语句: 这将导致以下错误: 另一方面,类似的execute工作正常: 我真的看不出有什么区别...
对于我的Java类,要求我们在working For语句中添加分号,并解释为什么输出是这样的。我不明白为什么添加分号会产生错误的树类型错误,导致代码无法编译。代码下面是输出;我还向any标记添加了反斜杠,因为它不会以其他方式显示。那么,为什么for语句后面的分号会导致这样的错误呢?提前谢谢。 运行时间:
我使用比较器对流进行排序,遇到了一个我不理解的编译器错误。 假设我有以下课程: 我正在创建两个比较器,以按日期对s进行排序,一个按自然顺序,另一个按相反顺序。编译以下代码: 意识到是在上定义的,我想我会尝试以下操作: (对我来说)令人惊讶的是,rev2的代码编译正常,而rev1的代码产生以下错误: 为什么我会收到这些编译器错误?为什么我可以在从构建时有效地规避它们? (如果相关的话,我正在使用Ec
minecraft 1.8.8的modcoderpack918中的有一个很大的问题。我的Java版本是1.8.0_271-B09。 我不知道我必须做什么。