【发布时间】:2015-04-02 22:48:42
【问题描述】:
我正在尝试在 if 条件下评估表达式 (1 <= month <= 12)。
此语句在 javascript 中似乎有效,但在 Java 中无效。
在 Java 中,
int month = 0;
boolean flag = (1 <= month <= 12);
它会抛出以下错误:
操作符
在 Javascript 中,
var month = 0;
console.log('Expression evaluates to: ', (1 <= month <= 12));
无论月份的值是多少,它总是返回
true。
谁能解释一下:
- 是否为有效表达式?
- 为什么在 javascript 中它总是屈服于
true? - 为什么java会认为它是一个无效的表达式?
我也知道我可以让它以这种方式工作(1 <= month && month <= 12)。所以,不是在寻找解决方案,而是在寻找解释。
谢谢。如果我的问题不清楚,也请告诉我。
【问题讨论】:
-
这是一个有效的表达式(在 JavaScript 中,而不是在 Java 中),但它并没有像您认为的那样做。 Java 不会让您在数字和布尔值之间执行类似的比较,但它会以相同的方式解析表达式 (
(1 <= month) <= 12)。 -
不要比较 Javascript 和 Java。没有出于相同的目的。 Java 是强类型的,而 javascript 不是并且将允许更多 funky 风格的编程
标签: java javascript expression