JAVA当中用哪个中间词循环?

java for循环用法~

Java for循环的几种用法详解
本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看。
J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。
在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当 然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其 它循环常用得多)。
对于遍历数组,这个循环一般是采取这样的写法:
清单1:遍历数组的传统方式
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
而对于遍历Collection对象,这个循环则通常是采用这样的形式:
清单2:遍历Collection对象的传统方式
/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iterator itr = stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}
而在Java语言的最新版本――J2SE 1.5中,引入了另一种形式的for循环。借助这种形式的for循环,现在可以用一种更简单地方式来进行遍历的工作。
1、 第二种for循环
不严格的说,Java的第二种for循环基本是这样的格式:
for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体
借助这种语法,遍历一个数组的操作就可以采取这样的写法:
清单3:遍历数组的简单方式
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
这里所用的for循环,会在编译期间被看成是这样的形式:
清单4:遍历数组的简单方式的等价代码
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int 变量名甲 = 0; 变量名甲 < integers.length; 变量名甲++) {
System.out.println(integers[变量名甲]); /* 依次输出“1”、“2”、“3”、“4” */
}
这里的“变量名甲”是一个由编译器自动生成的不会造成混乱的名字。
而遍历一个Collection的操作也就可以采用这样的写法:
清单5:遍历Collection的简单方式
/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Object str : list) {
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
这里所用的for循环,则会在编译期间被看成是这样的形式:
清单6:遍历Collection的简单方式的等价代码
/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iterator 变量名乙 = list.iterator(); 变量名乙.hasNext();) {
Object str = 变量名乙.next();
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
这里的“变量名乙”也是一个由编译器自动生成的不会造成混乱的名字。
因为在编译期间,J2SE 1.5的编译器会把这种形式的for循环,看成是对应的传统形式,所以不必担心出现性能方面的问题。
不用“foreach”和“in”的原因
Java采用“for”(而不是意义更明确的“foreach”)来引导这种一般被叫做“for-each循环”的循环,并使用“:”(而不是意义 更明确的“in”)来分割循环变量名称和要被遍历的对象。这样作的主要原因,是为了避免因为引入新的关键字,造成兼容性方面的问题――在Java语言中, 不允许把关键字当作变量名来使用,虽然使用“foreach”这名字的情况并不是非常多,但是“in”却是一个经常用来表示输入流的名字(例如 java.lang.System类里,就有一个名字叫做“in”的static属性,表示“标准输入流”)。
的确可以通过巧妙的设计语法,让关键字只在特定的上下文中有特殊的含义,来允许它们也作为普通的标识符来使用。不过这种会使语法变复杂的策略,并没有得到广泛的采用。
“for-each循环”的悠久历史
“for-each循环”并不是一个最近才出现的控制结构。在1979正式发布的Bourne shell(第一个成熟的UNIX命令解释器)里就已经包含了这种控制结构(循环用“for”和“in”来引导,循环体则用“do”和“done”来标识)。
2、防止在循环体里修改循环变量
在默认情况下,编译器是允许在第二种for循环的循环体里,对循环变量重新赋值的。不过,因为这种做法对循环体外面的情况丝毫没有影响,又容易造成理解代码时的困难,所以一般并不推荐使用。
Java提供了一种机制,可以在编译期间就把这样的操作封杀。具体的方法,是在循环变量类型前面加上一个“final”修饰符。这样一来,在循环体 里对循环变量进行赋值,就会导致一个编译错误。借助这一机制,就可以有效的杜绝有意或无意的进行“在循环体里修改循环变量”的操作了。
清单7:禁止重新赋值
int[] integers = {1, 2, 3, 4};
for (final int i : integers) {
i = i / 2; /* 编译时出错 */
}
注意,这只是禁止了对循环变量进行重新赋值。给循环变量的属性赋值,或者调用能让循环变量的内容变化的方法,是不被禁止的。
清单8:允许修改状态
Random[] randoms = new Random[]{new Random(1), new Random(2), new Random(3)};
for (final Random r : randoms) {
r.setSeed(4); /* 将所有Random对象设成使用相同的种子 */
System.out.println(r.nextLong()); /* 种子相同,第一个结果也相同 */
}
3. 类型相容问题
为了保证循环变量能在每次循环开始的时候,都被安全的赋值,J2SE 1.5对循环变量的类型有一定的限制。这些限制之下,循环变量的类型可以有这样一些选择:
循环变量的类型可以和要被遍历的对象中的元素的类型相同。例如,用int型的循环变量来遍历一个int[]型的数组,用Object型的循环变量来遍历一个Collection等。
清单9:使用和要被遍历的数组中的元素相同类型的循环变量
int[] integers = {1, 2, 3, 4};
for (int i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
清单10:使用和要被遍历的Collection中的元素相同类型的循环变量
Collection strings = new ArrayList();
strings.add("A");
strings.add("B");
strings.add("C");
strings.add("D");
for (String str : integers) {
System.out.println(str); /* 依次输出“A”、“B”、“C”、“D” */
}
循环变量的类型可以是要被遍历的对象中的元素的上级类型。例如,用int型的循环变量来遍历一个byte[]型的数组,用Object型的循环变量来遍历一个Collection(全部元素都是String的Collection)等。
清单11:使用要被遍历的对象中的元素的上级类型的循环变量
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
for (Object str : list) {
System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */
}
循环变量的类型可以和要被遍历的对象中的元素的类型之间存在能自动转换的关系。J2SE 1.5中包含了“Autoboxing/Auto-Unboxing”的机制,允许编译器在必要的时候,自动在基本类型和它们的包裹类(Wrapper Classes)之间进行转换。因此,用Integer型的循环变量来遍历一个int[]型的数组,或者用byte型的循环变量来遍历一个 Collection,也是可行的。
清单12:使用能和要被遍历的对象中的元素的类型自动转换的类型的循环变量
int[] integers = {1, 2, 3, 4};
for (Integer i : integers) {
System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
}
注意,这里说的“元素的类型”,是由要被遍历的对象的决定的――如果它是一个Object[]型的数组,那么元素的类型就是Object,即使里面装的都是String对象也是如此。
可以限定元素类型的Collection
截至到J2SE 1.4为止,始终无法在Java程序里限定Collection中所能保存的对象的类型――它们全部被看成是最一般的Object对象。一直到J2SE 1.5中,引入了“泛型(Generics)”机制之后,这个问题才得到了解决。现在可以用Collection来表示全部元素类型都是T的Collection。

就是 一个执行循序问题,先执行外面的循环:1 for(int i=0;i<10;i++){2 for(int j=0;j<3;j++) {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=0i=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 循环:for 循环是一种用于重复执行代码的循环,它通常用于在给定范围内进行循环。例如:


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

// code to be executed

}

  • while 循环:while 循环是一种用于在满足条件时重复执行代码的循环。例如:


int i = 0;

while (i < 10) {

// code to be executed

i++;

}

  • do-while 循环:do-while 循环是一种用于在满足条件时重复执行代码的循环,它的区别在于它会先执行一次循环体,再判断条件是否满足。例如:


int i = 0;

do {

// code to be executed

i++;

} while (i < 10);

所以,在 Java 中,可以使用 for、while 或 do-while 循环来实现循环。



for while do...while

java程序中:能让程序可以一直循环运行的关键字是什么?直到条件正确后才 ...
答:使用下面两个循环,都可以一直循环:for(;true; ){ if(XXXXXXXX){//退出条件 break;} } while(true){ if(XXXXXXXXXXXXXXX){ //退出条件 break;} }

java中有什么循环吗?
答:1、while 循环 while是最基本的循环,它的结构为:while( 布尔表达式 ) { //循环内容} 只要布尔表达式为 true,循环就会一直执行下去。2、do…while 循环 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,...

什么是循环?Java中有哪些循环?
答:java循环有三种:1、do while 循环 2、while 循环 3、for 循环 1、do while 循环 至少执行一次 语法格式:do { 至少执行一次循环体 sum =sum +i ;//累加自然整数i到sum i =i +1;//自然整数加一到下一个整数 }while(i<=100);2、while 循环 语法格式:while(i<=100);{ //可能一次...

java里有哪些循环语句?
答:第二:do-while语句【至少得执行一次循环】相应语法:do{//执行循环的语句 }while(布尔条件式);小总结:【while语句是先执行布尔条件,再执行循环语句而do-while语句首先保证循环体内至少执行一次循环】第三:for语句【是最常见、使用最多和最典型的循环语句】对应语法:for(初始化语句;布尔条件式;...

java循环语句有三种写法
答:for循环是java程序中设计最有用的循环语句之一。一个for循环可以用来重复执行某个语句,直到某个条件得到满足。语句格式:for(初始化;布尔表达式;更新){//代码语句}实例:int num1=3;for(inti=0;i< num1;i++){System.out.println(“i输出值”+i+"、");}i输出值0、i输出值1、i输出值2、...

java中如何跳出内层的while循环
答:用break就可以跳出循环啦~~或者在break后面加个标签,然后在你需要跳到的地方写上这个标签,就可以跳到指点的位置,有点类似与goto吧~~~int i = 0;breakTest: while(true){ for(int j = 0;i<100;j++){ i++;if(i == 10) { break breakTest;} } } 这个是带标签的,如果不带标签的...

java里面的for循环的格式: for(String s : arr)是什么意思,能否详细...
答:分析如下:for的循环语句for(String s : args)这个格式是foreach的形式,表示取出数组args[]中的每一个元素,就是循环一次就依次取出一个元素赋值给s,知道取完为止java中的foreach也是用for表示具体语法分两种:第一种-数组for(type var : arr) {//循环体}示例(这里以List为例):List<String> ...

在java中用来跳出循环的是
答:在java中用来跳出循环的是break、continue、continue。java跳出循环的几种方式:1、break:直接结束一个循环,跳出循环体。break以后的循环体中的语句不会继续执行,循环体外面的会执行。2、continue:中止本次循环,继续下次循环。continue以后的循环体中的语句不会继续执行,下次循环继续执行,循环体外面的会...

Java循环遍历什么意思?
答:\x0d\x0a \x0d\x0abreak;\x0d\x0a \x0d\x0acontinue;\x0d\x0a \x0d\x0abreak 语句被用来从 switch 语句、循环语句中退出,跳出离 break 最近的循环。\x0d\x0a \x0d\x0acontinue 语句被用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。

JAVA里,while循环能做的,for循环都能做吗?
答:不一定,这要视情况而定,while循环是你知道条件的前提下才使用的,而for循环是需要知道循环次数 两者的使用情况不一样,不过二楼的例子也能说明问题,但是在写代码的时候非常不建议这么使用!记住while是“当”型循环就行;

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网