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”却是一个经常用来表示输入流的名字(例如ng.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< String> strings = new ArrayList< String>();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>(全部元素都是String的Collection)等。
清单11:使用要被遍历的对象中的元素的上级类型的循环变量String[] strings = {"A","B","C","D"};Collection< String> 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< Byte>,也是可行的。
清单12:使用能和要被遍历的对象中的元素的类型自动转换的类型的循环变量int[] integers = {1,2,3,4};for (Integer i : integers) {System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */}注意,这里说的“元素的类型”,是由要被遍历的对象的决定的――如果它是一个Object[]型的数组,那么元素的类型就是Object,即使里面装的都是String对象也是如此。
java的三种循环语句用法
java的三种循环语句⽤法for循环:import java.util.*;public class For{public static void main(String[]args){//写法1int [] arr={1,2,3,4,5};for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}System.out.println("--------");//写法2int j=0;for(;;){if(j==arr.length)break;System.out.println(arr[j]);j++;}System.out.println("--------");//写法3(不会有越界的问题)for(int i:arr){System.out.println(i);}//⽐较String[]names={"huo","hui","chao"};for(int i=0;i<names.length;i++){System.out.println(names[i]);}System.out.println("--------");for(String name:names){System.out.println(name);}}}while循环:import java.util.*;public class While{public static void main(String[]args){String[]arrs={"ab","abc","aszx","xyz","jkl","tyu"};int i=0;while(i<arrs.length){System.out.println(arrs[i]);i++;System.out.println(i);}System.out.println("---------");int j=0;while(j<arrs.length){System.out.println(arrs[j]);j++;System.out.println(j);if(j==2)break;//break:终⽌循环只能跳出⼀层循环}System.out.println("---------");int h=0;while(h<arrs.length){System.out.println(arrs[h]);h++;if(h==3)continue;//continue:终⽌当前循环接着进⾏下⼀次循环System.out.println(h);}}}do-while循环:import java.util.*;public class Dowhile{public static void main(String[]args){int i=10;while(i>11){System.out.println("while i="+i);}System.out.println("outer:"+i);do{System.out.println("do while i="+i);}while(i>11);}}。
java中for循环的几种表示
一、基本的for循环语法在Java中,for循环是一种用于重复执行一段代码块的控制流结构。
其基本语法格式如下:```javafor (初始化; 循环条件; 迭代表达式) {// 循环体}```其中,初始化部分用于初始化循环控制变量;循环条件部分为循环条件表达式,当条件为真时执行循环体;迭代表达式用于更新循环控制变量的值。
每个部分之间由分号分隔。
二、增强for循环Java 5引入了一种新的for循环语法,即增强for循环,也称为foreach循环。
其语法格式如下:```javafor (元素类型元素变量 : 遍历对象) {// 循环体}```其中,元素类型为集合中元素的类型,元素变量为遍历过程中每个元素的变量名,遍历对象为要进行遍历的集合或数组。
增强for循环可以简化对集合或数组的遍历操作,代码更加简洁易读。
三、嵌套循环嵌套循环是指在一个循环内部再嵌套一个或多个循环的结构。
在Java 中,可以通过嵌套多个for循环来实现多维数组的遍历、组合的生成等复杂操作。
```javafor (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {// 循环体}}```上述代码中的嵌套for循环实现了一个3x3的二维数组的遍历操作。
通过嵌套多个循环,可以处理不同维度的数据结构,完成更为复杂的逻辑。
四、循环控制语句在for循环中,可以通过break和continue语句来控制循环的执行流程。
break语句用于跳出当前循环,终止循环的执行;continue语句用于结束本次循环迭代,继续执行下一次迭代。
```javafor (int i = 0; i < 10; i++) {if (i == 5) {continue; // 跳过本次循环}if (i == 8) {break; // 跳出循环}// 循环体}```通过使用break和continue语句,可以在特定条件下优化循环的执行流程,提高程序的效率。
java中for的用法
java中for的用法【原创实用版】目录1.Java 中 for 循环的基本语法2.for 循环的初始化表达式3.for 循环的条件表达式4.for 循环的迭代表达式5.for 循环的典型应用场景正文在 Java 编程语言中,for 循环是一种非常常见的循环结构,用于执行重复的操作。
for 循环具有清晰的语法结构,易于理解和使用。
下面我们将详细介绍 Java 中 for 的用法。
1.Java 中 for 循环的基本语法Java 中的 for 循环包含三个部分,分别是初始化表达式、条件表达式和迭代表达式。
其基本语法如下:```for (initialization; condition; increment) {// 循环体,执行重复操作的代码}```2.for 循环的初始化表达式初始化表达式用于定义循环变量的初始值。
在循环开始之前,该表达式会被执行一次。
例如:```for (int i = 0; i < 10; i++) {// 循环体}```这里,变量 i 的初始值为 0。
3.for 循环的条件表达式条件表达式用于判断循环是否应该继续执行。
当条件为 true 时,循环继续执行;当条件为 false 时,循环结束。
例如:```for (int i = 0; i < 10; i++) {if (i == 5) {break; // 当 i 等于 5 时,跳出循环}// 循环体}```4.for 循环的迭代表达式迭代表达式用于更新循环变量的值,使其在每次循环迭代时发生变化。
迭代表达式在每次循环迭代后执行,使循环变量逐渐接近条件表达式。
例如:```for (int i = 0; i < 10; i++) {// 循环体}```这里,变量 i 在每次迭代时加 1,直到 i 等于 10。
5.for 循环的典型应用场景for 循环通常用于遍历数组、集合或执行特定次数的操作。
例如:```int[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) {System.out.println(number);}```这里,我们使用 for 循环遍历数组 numbers,并打印每个元素。
javafor in循环的格式
javafor in循环的格式在Java 中,没有专门的"for in" 循环,但是有增强型for 循环(也称为foreach 循环),用于遍历数组、集合或其他Iterable 对象。
增强型for 循环的格式如下:```javafor (元素类型变量名: 可迭代对象) {// 循环体}```其中:-元素类型:表示可迭代对象中元素的类型。
-变量名:表示在每次循环迭代中用于存储当前元素的变量。
-可迭代对象:表示被遍历的数组、集合或其他Iterable 对象。
### 示例:1. 遍历数组:```javaint[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) {System.out.println(number);}```2. 遍历集合:```javaList<String> names = Arrays.asList("Alice", "Bob", "Charlie");for (String name : names) {System.out.println(name);}```3. 遍历字符串:```javaString message = "Hello";for (char ch : message.toCharArray()) {System.out.println(ch);}```增强型for 循环提供了一种简洁和直观的方式来遍历集合和数组,但请注意,它不适用于所有情况。
例如,如果你需要访问集合中的元素索引或在循环体中修改集合,传统的for 循环可能更合适。
java-for循环
java-for循环for循环for循环语句是⽀持迭代的⼀种通⽤结构,最有效的、最灵活的循环结构。
for循环执⾏的次数是在执⾏前就确定的。
语法for(初始化;布尔表达式;更新){//代码语句关于 for 循环有以下⼏点说明:最先执⾏初始化步骤,可以声明⼀种类型,但可初始化⼀个或多个循环控制变量,也可以是空语句。
然后,检测布尔值表达式的值,如果为 true,循环体被执⾏,如果为 false,循环终⽌,开始执⾏循环体后⾯的语句。
执⾏⼀次循环后,更新循环控制变量(迭代因⼦控制循环变量的增减)。
再次检测布尔表达式,循环执⾏上⾯的过程。
for( ; ; ){} 死循环例⼦public class For01 {public static void main(String[] args) {//初始化条件int a = 1;while(a <= 100){ //条件判断System.out.println(a); //循环体a += 2; //迭代。
相当于: a = a + 2}System.out.println("while循环结束!");//快捷键:100.for 回车就会⾃动⽣成for循环// 初始化、条件判断、迭代for (int i = 1 ; i <= 100; i++){System.out.println(i);}System.out.println("for循环结束!");}}public class For02 {public static void main(String[] args) {// 练习1:计算0到100之间的奇数和偶数的和int oddSum = 0; //奇数的和int evenSum = 0; //偶数的和for (int i = 0; i < 100; i++) {if(i%2 != 0){ //奇数oddSum += i;}else { //偶数evenSum += i;}}System.out.println("奇数的和"+oddSum);System.out.println("偶数的和"+evenSum);}}public class For03 {public static void main(String[] args) {//⽤for循环输出1-1000之间能被5整除的数,并且每⾏输出3个for (int i = 0; i <= 1000; i++) {if(i%5 == 0){System.out.print(i+"\t");}if(i%(5*3)==0){ //相当于能被15整除就换⾏System.out.println();// System.out.println("/n");}}/*println 和 print 的区别:println 输出会换⾏print 输出完不会换⾏*/}}public class For04 {public static void main(String[] args) {//打印九九乘法表/*1、打印第⼀列2、我们把固定的1再⽤循环包起来3、去掉重复项,i <= j4、调整样式*/for (int j = 1; j <= 9; j++) {for (int i = 1; i <= j; i++) {System.out.print(i+"*"+j+"="+(j*i)+"\t");}System.out.println();}}}增强for循环public class For05 {public static void main(String[] args) {int[] numbers = {10,20,30,40,50}; //定义了⼀个数组for(int i = 0;i<5;i++){System.out.println(numbers[i]);}System.out.println("========================================"); //遍历数组的元素for(int x:numbers){System.out.println(x);}}}/*Java5 引⼊了⼀种主要⽤于数组或集合的增强型for循环。
java增强型for循环(三种遍历集合方式)
java增强型for循环(三种遍历集合⽅式)For-Each循环For-Each循环也叫增强型的for循环,或者叫foreach循环。
For-Each循环是JDK5.0的新特性(其他新特性⽐如泛型、⾃动装箱等)。
For-Each循环的加⼊简化了集合的遍历。
语法如下:for(type element: array){ System.out.println(element); }Demo:public static void query(){List<Teacher> list = new ArrayList<Teacher>();//list⾥存的是N个Teacher对象System.out.println("*****⽅式⼀*******");//第⼀种⽅式普通for循环for(int i=0;i<list.size();i++){Teacher t = (Teacher)list.get(i);System.out.println(t.getName());}System.out.println("*****⽅式⼆*******");//第⼆种⽅式使⽤迭代器for(Iterator<Teacher> iter = list.iterator(); iter.hasNext();){System.out.println(iter.next().getName());}System.out.println("*****⽅式三*******");//第三种⽅式增强型for循环for(Teacher t: list){System.out.println(t.getName());}}For-Each循环的缺点:丢掉了索引信息。
当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使⽤旧式的⽅式来实现循环或遍历,⽽不要使⽤增强的for循环,因为它丢失了下标信息。
java for循环给对象赋值的正确写法
java for循环给对象赋值的正确写法在Java中,使用`for`循环给对象赋值的正确写法取决于对象的类型和赋值的具体情况。
一般情况下,你可能会使用`for`循环迭代一个集合或数组,并将其元素赋值给对象。
以下是一些示例,演示了`for`循环给对象赋值的不同情况:1. 给数组元素赋值:```javaint[] array = new int[5];for (int i = 0; i < array.length; i++) {array[i] = i * 2; // 通过循环给数组元素赋值}```2. 给集合元素赋值:```javaList<String> stringList = new ArrayList<>();for (int i = 0; i < 5; i++) {stringList.add("Element " + i); // 通过循环给ArrayList添加元素}```3. 给对象数组元素赋值:```javaclass MyClass {int value;MyClass(int value) {this.value = value;}}MyClass[] objectArray = new MyClass[5];for (int i = 0; i < objectArray.length; i++) {objectArray[i] = new MyClass(i * 3); // 通过循环给对象数组元素赋值}```4. 使用增强型`for`循环:```javaList<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5);for (Integer value : integerList) {System.out.println(value); // 使用增强型for循环遍历集合}```以上示例演示了给数组、集合和对象数组赋值的常见情况。
java中for循环写法
java中for循环写法在Java中,for循环是一种常用的循环结构,用于重复执行一段代码,可以按照指定的条件和步长进行迭代。
下面我将从不同的角度介绍Java中for循环的写法。
1. 基本写法:for (初始化语句; 循环条件; 循环迭代) {。
// 循环体代码。
}。
初始化语句在循环开始前执行一次,循环条件用于判断是否继续循环,循环迭代用于每次循环结束后执行,循环体代码是需要重复执行的代码块。
2. 初始化语句:初始化语句用于初始化循环控制变量,可以是声明和赋值语句,也可以是多个语句用逗号分隔。
for (int i = 0; i < 10; i++) {。
// 循环体代码。
}。
3. 循环条件:循环条件是一个布尔表达式,用于判断是否继续执行循环。
当循环条件为true时,继续执行循环;当循环条件为false时,跳出循环。
for (int i = 0; i < 10; i++) {。
// 循环体代码。
}。
4. 循环迭代:循环迭代用于每次循环结束后对循环控制变量进行操作,可以是递增或递减操作,也可以是其他复杂的操作。
for (int i = 0; i < 10; i++) {。
// 循环体代码。
}。
5. 循环体代码:循环体代码是需要重复执行的代码块,可以是单条语句或多条语句的组合。
循环体代码执行完毕后,再次判断循环条件,如果满足条件则继续执行循环,否则跳出循环。
for (int i = 0; i < 10; i++) {。
// 循环体代码。
}。
6. 嵌套循环:在循环体中可以再次使用循环结构,形成嵌套循环,用于处理更复杂的问题。
for (int i = 0; i < 10; i++) {。
for (int j = 0; j < 5; j++) {。
// 循环体代码。
}。
}。
以上是关于Java中for循环的基本写法和相关要点的介绍。
通过灵活运用for循环,可以实现各种不同的循环需求。
java for 写法 -回复
java for 写法-回复关于"java for 写法"的主题,我将逐步回答并为您撰写一篇1500-2000字的文章。
【引言】在Java编程语言中,有许多循环结构可供使用。
其中之一是for循环,被广泛应用于迭代操作和循环控制。
本文将详细介绍Java中for循环的写法和使用技巧,以帮助读者更好地理解和应用。
【正文】一、基本语法在Java中,for循环通常由三个主要组成部分构成:初始化、条件判断和迭代,如下所示:for (初始化; 条件判断; 迭代) {循环体代码}其中,初始化部分用于声明并定义循环变量,通常用于初始化计数器。
条件判断部分用于判断循环是否继续执行,当条件不满足时,循环会终止。
迭代部分用于更新循环变量的值,以便下一次循环的执行。
二、循环变量循环变量是指在for循环中被初始化和迭代的变量。
通常用于控制循环的执行次数。
可以使用任意有效的Java数据类型作为循环变量,如int、double、char、boolean等,甚至可以使用对象类型。
例如,使用循环变量控制循环执行10次:for (int i = 0; i < 10; i++) {循环体代码}在上述示例中,循环变量i被初始化为0,在每次循环迭代时递增1,直到循环终止条件不满足为止。
三、循环控制语句在for循环中,可以使用多种循环控制语句来改变循环的执行流程,如break语句和continue语句。
1. break语句:用于立即终止当前循环,并跳出该循环,继续执行循环后的代码。
for (int i = 0; i < 10; i++) {if (i == 5) {break; 当循环变量i等于5时,跳出循环}循环体代码}在上述示例中,当循环变量i等于5时,程序立即跳出循环,不再执行循环体内的代码。
2. continue语句:用于跳过当前循环的剩余代码,直接进行下一次循环迭代。
for (int i = 0; i < 10; i++) {if (i 2 == 0) {continue; 当循环变量i为偶数时,跳过本次循环}循环体代码}在上述示例中,当循环变量i为偶数时,程序将直接跳过循环体内的代码,进行下一次循环迭代。
Java for循环讲解
Java for循环讲解for循环基本语法语法格式:for(①初始化部分;②循环条件部分;④迭代部分){③循环体部分;}执行过程:①-②-③-④-②-③-④-②-③-④-.....-②图示:说明:•①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔•②循环条件部分为boolean类型表达式,当值为false时,退出循环•④可以有多个变量更新,用逗号分隔•for(;;)中的两个;不能多也不能少应用举例案例1:格式的多样性题目:写出输出的结果public class ForTest2 {public static void main(String[] args){int num =1;for(System.out.print("a");num <3;System.out.print("c"),num++){ System.out.print("b");}}}案例2:使用for循环重复执行某些语句题目:输出5行HelloWorldpublic class ForTest1 {public static void main(String[] args){//需求1:控制台输出5行Hello World!//写法1://System.out.println("Hello World!");//System.out.println("Hello World!");//System.out.println("Hello World!");//System.out.println("Hello World!");//System.out.println("Hello World!");//写法2:for(int i =1;i <=5;i++){System.out.println("Hello World!");}}}案例3:累加的思想题目:遍历1-100以内的偶数,并获取偶数的个数,获取所有的偶数的和public class ForTest3 {public static void main(String[] args){int count =0;//记录偶数的个数int sum =0;//记录偶数的和for(int i =1;i <=100;i++){if(i %2==0){System.out.println(i);count++;sum += i;}//System.out.println("偶数的个数为:" + count);}System.out.println("偶数的个数为:"+ count);System.out.println("偶数的总和为:"+ sum);}}案例4:结合分支结构使用题目:输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
