java+for循环一行重复是怎么回事?

Python012

java+for循环一行重复是怎么回事?,第1张

Java中的for循环是一种迭代控制结构,它允许在给定的次数内执行一个或多个语句。例如,下面的for循环会执行五次:

在这个例子中,每一次循环都会打印一条消息,并且所有消息都会在一行中重复。

希望这对您有帮助。

就是 一个执行循序问题,先执行外面的循环:

1   for(int i=0i<10i++){

2         for(int j=0j<3j++) {

3            System.out.print("i*j="+i*j)

4        }

5    }

6   ....

....

当开始循环的时候,i=0,然后继续运行,j=0,输出i*j=0 

此时循环从j=1,i仍旧为0 ,  j的值为2

输出结果为i*j=0,此时j++,j的值为2

循环从j=2,i仍旧为0  ,输出结果为i*j=0

当j=3,不满足j<3跳出内部for循环,执行外部for循环第二行代码,此时i++,i的值变为1

循环i=1,  j=0时,结果为i*j=0

i=1,j=1   结果为i*j=1

当i循环到9,j=2是,输出循环结果为i*j=18

当i=10,不满足i<10,跳出外部循环,执行第6行

我只是拿一个例子给你讲解的,我像这样比给你讲解概念好理解。

一,在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。

二,foreach不是一个关键词,它指的是一种java里的循环方式,顾名思义代表对于每一个,表示每次给你要遍历的东西生成一个降维对象,然后访问。

比如说for(a:b),b是你要遍历的东西,每次循坏都会生成一个b的子集a,a是你自己命名的一个元素,在这个for里我们访问的就是这个a,每次循环都会访问一个新的a。

三,看你图里的代码,balances是二维数组,假设看成一个矩阵,我们需要一行一行遍历它,那么double[] row就是这个矩阵每行的意思。回到代码,for(double[] row:balances)就是指对于balances的每行row,同样的道理for(double b:row)的意思是对于每行row里的每个元素b,因为row是一维的数组,对它降维就是单个元素了。其中的row和b都是由你自己命名的,爱起什么名就起什么名,起完了名就可以在循环体里直接用了。遍历顺序就是顺序遍历,从前到后,跟你用i++,j++一样。

这种写法的好处在于,一是不需要管遍历的次数,二是你定义的子元素可以直接用,看起来比a[i]、a[j]方便。

以下为for循环的几种写法

/***

方法一:最普通的不加思考的写法

* <p>*优点:较常见,易于理解

* <p>* 缺点:每次都要计算list.size()*/

for (int i = 0i <list.size()i++) {

System.out.println(list.get(i))

}

/***

方法二:数组长度提取出来

* <p>* 优点:不必每次都计算

* <p>* 缺点:

1、m的作用域不够小,违反了最小作用域原则

2、不能在for循环中操作list的大小,比如除去或新加一个元素*/

int m = list.size()

for (int i = 0i <mi++) {

System.out.println(list.get(i))

}

/***

方法三:数组长度提取出来

* <p>* 优点:

1、不必每次都计算

2、所有变量的作用域都遵循了最小范围原则

* <p>* 缺点:

1、m的作用域不够小,违反了最小作用域原则

2、不能在for循环中操作list的大小,比如除去或新加一个元素*/

for (int i = 0, n = list.size()i <ni++) {

System.out.println(list.get(i))

}

/***

方法四:采用倒序的写法

* <p>* 优点:

1、不必每次都计算

2、所有变量的作用域都遵循了最小范围原则

* <p>* 缺点:

1、结果的顺序会反

2、看起来不习惯,不易读懂

* <p>* 适用场合:与显示结果顺序无关的地方:比如保存之前数据的校验*/

for (int i = list.size() - 1i >= 0i--) {

System.out.println(list.get(i))

}

/***

方法五:Iterator遍历

* <p>* 优点:简洁

* <p>* 缺点:*/

for (Iterator<String>it = list.iterator()it.hasNext()) {

System.out.println(it.next())

}

/*** 方法六:

jdk1.5新写法

* <p>* 优点:简洁结合泛型使用更简洁*

<p>* 缺点:jdk1.4向下不兼容*/

for (Object o : list) {

System.out.println(o)

}