这是我当作为小组长的一次培训,在此先列个提纲

1.首先 循环 JAVA里中的的循环有while for 和增强for循环 这里先不讲增强for循环了
增强for循环确实遍历数组比较容易,但不能获取其下标来进行其他操作 所以不建议初学者常用增强for循环

而且增强for循环有一些坑,我们来看一下它的原理

Integer i; 定义一个临时变量i
Iterator iterator = list.iterator(); 获取List的迭代器
iterator.hasNext(); 判断迭代器中是否有未遍历过的元素
i = (Integer)iterator.next(); 获取第一个未遍历的元素,赋值给临时变量i
System.out.println(i) 输出临时变量i的值

增强for循环通过迭代器实现,那么必然有迭代器的特性
Java中有fail-fast机制。在使用迭代器遍历元素的时候,在对集合进行删除的时候一定要注意,使用不当有可能发生ConcurrentModificationException,这是一种运行时异常,编译期并不会发生。只有在程序真正运行时才会爆发。
在这里Iterator是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException异常。

所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。

但你可以使用 Iterator 本身的方法 remove() 来删除对象,Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。

正确的在遍历的同时删除元素的姿势:
Iterator<Student> stuIter = students.iterator(); while (stuIter.hasNext()) { Student student = stuIter.next(); if (student.getId() == 2) stuIter.remove();//这里要使用Iterator的remove方法移除当前对象,如果使用List的remove方法,则同样会出现ConcurrentModificationException }

while循环结构

只要while中的表达式成立 就会不断地循环执行

//打印0到4    
        int i = 0;
        while(i<5){
            System.out.println(i);
            i++;
        }

而do while循环
与while的区别是,无论是否成立,先执行一次,再进行判断

//打印0到4
        //与while的区别是,无论是否成立,先执行一次,再进行判断
        int i = 0;
        do{
            System.out.println(i);
            i++;           
        } while(i<5);

普通for循环

//使用for打印0到4    
        for (int j = 0; j < 5; j++) {
            System.out.println("for  循环输出的"+j);
        }

来看一下for循环的结构

for(单次表达式;条件表达式;末尾循环体)
{
中间循环体;
}

其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。

单次表达式是一个不参与循环的表达式。
一般作为某一变量的初始化赋值语句
而第二个表达式即关系表达式 作为循环的正是开端
当条件表达式成立时执行中间循环体
中间循环体只有一个语句的时候可以省略大括号
不过不建议这么做,只是看别人代码的时候要知道
最后再执行第三个表达式 再进入到第二个表达式来进行判断

JAVA中与C不同 在JAVA中 可以在for循环的第一个表达式中带着声明和赋值。而C必须要先在循环外赋值。
直接在c中声明会报错

“for”循环初始声明只允许在c99或c11模式下使用

这一般和编译器的版本有关。

补充一下java中的输入

来练习一下下面的题目

java 循环里拼接字符串 java怎么实现循环输入_数组

2.JAVA中的输入

java 循环里拼接字符串 java怎么实现循环输入_java 循环里拼接字符串_02

3.数组

数组是一个固定长度的,包含了相同类型数据的 容器

//声明一个引用
        int[] a;
        //创建一个长度是5的数组,并且使用引用a指向该数组
        a = new int[5];
         
        int[] b = new int[5]; //声明的同时,指向一个数组

数组是基零的

a[0]= 1;  //下标0,代表数组里的第一个数
        a[1]= 2;
        a[2]= 3;
        a[3]= 4;
        a[4]= 5;

其范围是0到长度-1

分配空间同时赋值

//写法一: 分配空间同时赋值
        int[] a = new int[]{100,102,444,836,3236};
 
        //写法二: 省略了new int[],效果一样
        int[] b = {100,102,444,836,3236};

3.排序


冒泡排序法
(获取数组长度的方法 数组名.length)

for (int j = 0; j < a.length; j++) {
            for (int i = 0; i < a.length-j-1; i++) {
                if(a[i]>a[i+1]){  
                    int temp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = temp;
                }
            }
        }

思路:
冒泡法排序的思路:
第一步:从第一位开始,把相邻两位进行比较
如果发现前面的比后面的大,就把大的数据交换在后面,循环比较完毕后,最后一位就是最大的
第二步: 再来一次,只不过不用比较最后一位