我正在制作一个程序(一种 Piglatin 之类的...),其中我无意中错过了语句中的一个变量:
String a = "R"++'a';
它实际上应该是 String a = "R"+text+'a';
。编译器产生错误。但是,当我成功时:
String a = "R"+ +'a';
编译好的程序。
我想知道为什么即使 Java 不关心你是否在某些语句中放置空格,但为什么放置空格会有所不同,例如:String a="ABCD";
与String a = "ABCD";
有人可以解释一下这种行为吗?
最佳答案
++
本身就是一个运算符(前增量或后增量)。
将它放在字符串和字 rune 字之间在语法上是无效的。
但是对于 "R"+ +'a'
,第二个 +
将绑定(bind)到字 rune 字 a
并将充当一元加运算符(此运算符具有非常高的优先级)。这不是空操作:在 Java 中,它具有提升a
的类型 为整数
。这种类型提升意味着输出将是 R97
而不是 Ra
(97 是 a
的 ASCII 码)。剩余的 +
充当字符串连接器。
关于Java : space makes a difference in compilation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34134933/