【问题标题】: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(),为什么可以执行呢?它没有告诉我这是一个错误。

【问题讨论】:

  • 你的问题不清楚,意义不大
  • 嗯,很明显,. 运算符 notnew 之前。事实上,它们都是Primary,所以它们具有相同的优先级,所以它们从左到右求值。
  • @Rahul - 对我来说,初学者的这个问题显然是有道理的。我仍然记得我开始编程(使用 java)时的愚蠢问题。
  • @Rahul 这个问题非常清楚。它只是建立在一个错误之上。
  • "我假设这证明是不正确的。为什么证明不正确?"答:你的假设是错误的,不是证据

标签: java


【解决方案1】:

. 运算符不会在 new StringBuilder() 之前进行评估 - 它都是从左到右评估的。所以new StringBuilder() 创建一个StringBuilder 实例,.reverse() 反转(空)StringBuilder,然后.toString() 构造一个(空)String

【讨论】:

    【解决方案2】:

    运算符'.'早于new

    不,不是。运算符. 不在new 之前:它们都是Primary,所以它们具有相同的优先级,所以它们从左到右求值。

    为什么可以正确执行?

    真正的问题是为什么它可以被编译,我已经回答过了。

    它没有告诉我这是一个错误。

    这不是错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多