java 类型转换顺序_Java转换顺序

小编典典

(C)a.foo()等价于(C)(a.foo()),即问题中的#2。

要获得#1,您必须编写((C)a).foo()。

Java语言规范没有在易于理解的摘要中指定运算符优先级。

Sedgewick和Wayne撰写的

Java编程简介附录A中有一张完整的运算符优先级表。

Java编程语言的附录B

有一个运算符优先级表,但它不如Sedgewick的完整。

仔细检查Java语言规范中的语法可以确定所涉及的强制转换和方法调用表达式的相对优先级:

**表达式** :

**Expression1** [AssignmentOperator表达式1]

表达式1:

**Expression2** [Expression1Rest]

Expression1Rest:

?表达式:Expression1

表达式2:

**Expression3** [Expression2Rest]

Expression2Rest:

{InfixOp Expression3}

Expression3 instanceof类型

表达式3:

PrefixOp表达式3

**(表达式|类型)Expression3**

**Primary** {选择器} {PostfixOp}

主:

ParExpression

NonWildcardTypeArguments(ExplicitGenericInvocationSuffix |此参数)

这个[参数]

超级后缀

文字

新造物主

**标识符{。 标识符} [IdentifierSuffix]**

BasicType {[]} .class

无效类

相关作品以粗体显示。我们可以看到强制转换表达式与生产匹配Expression3 : (Expression|Type)

Expression3。方法调用通过生产匹配Expression3 : Primary {Selector}

{PostfixOp}生产Primary: Identifier {. Identifier

}[IdentifierSuffix]。综上所述,我们看到方法调用表达式将被视为强制转换执行的单元(an Expression3)。

嗯,优先级图表更容易遵循…;)

2020-10-12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值