Java 什么是'';关于声明的内容?

Java 什么是'';关于声明的内容?,java,syntax,insertion-sort,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 ];

我试图理解以下代码:

/**
   * 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;
      }
  }
/**
*简单的插入排序。
*@param是一组可比较的项目。
*/
公共静态void insertionSort(可比[]a)
{
对于(int p=1;p0&&tmp.compareTo(a[j-1])<0;j--)
a[j]=a[j-1];
a[j]=tmp;
}
}
但是我不知道(;)的
是什么意思,所以我需要你们的帮助。

抱歉,如果它重复了,但我在这里和谷歌中搜索,但到目前为止什么都没有。

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


在“;”之前没有任何内容(除了括号),它只是说“在循环开始之前,我不想做任何事情”。不需要分配任何变量,等等。

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

它只是一个分隔符。 如果前面什么都没有,这意味着部分逻辑是空的。 格式是

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这样做”的形式。
你在这些部分中的每一部分都是随意的。

很简单:它基本上是指

for(..a.. ; ..bb.. ; ..c..){ // }.
……a……:是您初始化的内容(如果有)或将其保留为空。 …b…:循环运行一次后要执行的任何支票。
C循环运行一次后对变量的任何更改

for循环的所有3个部分都是可选的。因此,例如,您可以使用
for(;;)
for无限循环。虽然我通常更喜欢使用等价的
while(true)
。非常正确。for(;;)仅在测试时更可取,您可能希望添加变量等。而(true)肯定更可读。我本来想说您应该将它更改为
for(int j)
,但后来意识到他在循环下引用了
j
。然而,这意味着他不能完全删除for循环上方的行,而是需要
intj;对于(j=p…
。所以,我回到了您的版本,尽管它仍然有点错误。嗯,现在我明白了。谢谢大家,非常有用,但我更喜欢while声明,而不是强硬,理解它的含义。@Brian:Oops-我必须承认,我很快就把它放进去了,我也不是Java程序员;)这只是初始化变量j,因为您必须知道所有循环都有三个部分:初始化、条件检查、递增/递减