解释Java 8 OCA准备的输出

时间:2019-02-20 07:53:42

标签: java

import static java.lang.System.*;

class _{
    public static void main(String[] __A_V_)
    {
        String $="";
        for(int x=0;++x<__A_V_.length;)
        $ += __A_V_[x];     
        out.println($);
    }
}

和命令行:

  

javac _.java

     

java _-A。

Plz解释O / p如何为“ A”。 (没有空间)

我期望“-A”。 (有空格)

2 个答案:

答案 0 :(得分:3)

java _ - A .

正在将三个参数传递给main类的_方法:“-”,“ A”和“。”。空格是参数之间的分隔符。

由于++x<__A_V_.length中的预递增运算符,您的循环跳过了第一个参数(“-”)。

因此,仅第二个和第三个参数-__A_V_[1](其值为“ A”)和__A_V_[2](其值为“。”)-附加到$字符串和

如果将其更改为

java _ "- A ."

您将传递一个值为“-A”的单个参数。 (这次空格将成为单个参数的一部分)到main。但是,现在,跳过第一个参数将意味着您的$字符串将保持为空。

答案 1 :(得分:1)

从技术上讲,有两件事:

  • 在命令行上传递的空格用作分隔符,它们不会在传入的args数组中“显示”
  • 参数的顺序与命令行匹配,但是迭代它们的循环略微超出了预期。

但是除此之外,还有一个独特的非答案:这里真正的答案是OP自己调试这类东西。认真地讲:准备考试时,关键技能是可以自己找到解释。

在这种情况下,解决方案将是要么快速转到调试器,要么简单地增强给定代码以使用某些println()调用,例如打印出{{1 }}索引(以及传入参数数组的内容)。换句话说:可以通过观察在运行时代码做什么来轻松解决此任务,因此,OP应该使自己能够观察他的代码正在做什么。

关于第二个问题(来自注释),为什么循环在不使用incr / decr的情况下起作用...让我们引用官方教程:

  

for循环的三个表达式是可选的;可以如下创建无限循环:

x

识别Java语言规范中的相应部分留给用户练习。