java new object.method() 为啥不报错? [关闭]
Posted
技术标签:
【中文标题】java new object.method() 为啥不报错? [关闭]【英文标题】:java new object.method() why not be a error? [closed]java new object.method() 为什么不报错? [关闭] 【发布时间】:2017-06-06 05:30:42 【问题描述】:对不起,我的英语水平很低。 例如:
new StringBuilder().reverse().toString();
运算符.
在new
之前,所以没有对象可以执行method()
,为什么可以执行呢?它没有告诉我这是一个错误。
【问题讨论】:
你的问题不清楚,意义不大 嗯,很明显,.
运算符 not 在 new
之前。事实上,它们都是Primary
,所以它们具有相同的优先级,所以它们从左到右求值。
@Rahul - 对我来说,初学者的这个问题显然是有道理的。我仍然记得我开始编程(使用 java)时的愚蠢问题。
@Rahul 这个问题非常清楚。它只是建立在一个错误之上。
"我假设这证明是不正确的。为什么证明不正确?"答:你的假设是错误的,不是证据
【参考方案1】:
.
运算符不会在 new StringBuilder()
之前进行评估 - 它都是从左到右评估的。所以new StringBuilder()
创建一个StringBuilder
实例,.reverse()
反转(空)StringBuilder
,然后.toString()
构造一个(空)String
。
【讨论】:
【参考方案2】:运算符'.'早于
new
不,不是。运算符.
不在new
之前:它们都是Primary
,所以它们具有相同的优先级,所以它们从左到右求值。
为什么可以正确执行?
真正的问题是为什么它可以被编译,我已经回答过了。
它没有告诉我这是一个错误。
这不是错误。
【讨论】:
以上是关于java new object.method() 为啥不报错? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章