Java语法疑问:为何`boolean xx = (43.3L == 3.333f)`语法合法?
Java语法问题解析:为什么
boolean xx = (43.3L == 3.333f);语法不合法 这个语句的语法错误根源在43.3L这个字面量上,而非比较操作本身,下面拆解核心规则:
核心知识点:Java字面量的后缀规则
- 整数类型字面量可加
L/l后缀,表示long类型(比如43L、100l是合法的)。 - 浮点数类型字面量默认是
double;要声明float需加F/f后缀(比如43.3f);D/d后缀可显式标记double(比如3.3d)。 - 带小数的字面量不能用
L后缀:43.3本身是浮点数形式,L仅适用于整数,这种写法直接违反Java语法规则。
其他语句的合法性验证
给出的其余语句均语法合法:
boolean x = (0.600 == 3.3d);:0.600默认是double,和显式double类型的3.3d比较,类型匹配,合法。boolean bw = (false == true);:布尔值直接比较,语法规则允许,结果为false。double dd = 2.5d;:显式声明double变量并赋值,合法。String[] se = new String[6];:创建指定长度的字符串数组,语法合法。
所以题目判定该语句语法不正确,核心原因是43.3L的写法违反了Java字面量后缀规则,而非浮点数与整数的比较逻辑问题。
内容的提问来源于stack exchange,提问作者Edward lucas
相关产品推荐
相关产品推荐

