什么意思';'在声明里面?

时间:2011-10-20 15:28:28

标签: java syntax insertion-sort

我正在尝试理解以下代码:

/**
   * Simple insertion sort.
   * @param a an array of Comparable items.
   */
  public static void insertionSort( Comparable [ ] a )
  {
      for( int p = 1; p < a.length; p++ )
      {
          Comparable tmp = a[ p ];
          int j = p;
          for( ; j > 0 && tmp.compareTo( a[j-1] ) < 0; j-- )
              a[ j ] = a[ j - 1 ];
          a[ j ] = tmp;
      }
  }

但我不确定for( ; )是什么意思所以我需要你的帮助。 对不起,如果它是重复的,但我在这里和谷歌搜索,但到目前为止没有。

4 个答案:

答案 0 :(得分:7)

for循环的第一部分是在循环开始之前发生的事情。通常它用于分配变量。

“;”没有任何东西(除了括号)之前它只是说“在循环开始之前我什么都不想做”。不需要分配变量等等。

答案 1 :(得分:2)

很简单:它基本上意味着

for(..a.. ; ..bb.. ; ..c..){ // }.

.. a ..:是你初始化的,如果有的话或者把它留空。 ..b ..:循环运行一次后要进行的任何检查。 ..c ..循环运行一次后对变量的任何更改

答案 2 :(得分:0)

我猜你正在徘徊第二个for循环语法。它只是一个没有任何初始化部分的常规for循环。必须在循环之前声明j,因为它在循环结束后在外部使用。

答案 3 :(得分:0)

这只是一个分隔符。 如果它前面没有任何东西,那意味着逻辑的一部分是空的。 格式为

for(  <stuff to do before starting the loop>
    ;
      <stuff to do before each iteration, and maybe give a value of 0 to terminate it>
    ;
      <stuff to do at the end of each iteration>
   )

坦率地说,我发现它非常灵活,因为不是每个循环的形式都是“为每个xxx执行此操作”。 你在每个部分中放入的内容实际上是任意的。