Java for循环详解

 更新时间:2019年03月14日 10:06:24   作者:东边的雨田  
这篇文章主要介绍了Java for循环方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

对于java中的for循环,我们用的最多的无非就是下面这个语句:

 for (int i = 0; i < 10; i++) {
  System.err.println(i);
}

但是对于for循环来说,它也有很多变体,如果不清楚了解for循环的结构原理,遇上一些变体的for循环,可能一时不太明白它的含义,for循环虽然有很多变体,但都离不开括号内3条语句的模式(除了增强for循环模式,后面再讨论)

for循环的结构:

for(语句A; 语句B; 语句C){

   //循环体

}

其中,语句A在整个循环过程中,只会执行一次;语句B必须是布尔类型的表达式(当然也可以不写,如果写就必须是布尔类型表达式),通过该布尔表达式去判断是否继续执行循环体;语句C会在每次循环结束后执行,也就是说,循环体执行多少次,语句C就会执行多少次。

其中语句的执行顺序是:

语句A→(语句B → 循环体 → 语句C)→(语句B → 循环体 → 语句C)→ ... →退出循环

 下面简单介绍一些for循环的变体:

变体一:语句丰富化多样化,只要保证语句A、C都是一条语句,语句B是布尔表达式,语句想怎么写由你自己定。

for (int i = 0, j = 0; i < 10 | j< 12; i++, j++) {
  System.err.println(i);
  System.err.println(j);
  System.err.println("=========");
}

变体二:语句A省略

 boolean flag = true;
int m = 0;
for (;flag; m++){
  if (m==10)
    flag=false;
  System.err.println(m);
}

 变体三:语句B省略,此时只有从循环体内退出循环,否则是无限循环。

 int m = 0;
for (;; m++){
  if (m==10)
    break;
  System.err.println(m);
}

 变体四:语句C省略

 int m = 0;
for (;;){
  if (m==10)
    break;
  System.err.println(m);
  m++;
}

 说明:以上的变体,只是相对于我们常用的形式来讲的,变体的结构本质是不变的,我们没必要去刻意的使用变体的形式。之所以提出来讲,只是希望以后遇到变体的情况,能尽快看懂循环的含义,不至于看到别人写的代码,和自己写的方式不一样,然后一脸蒙圈。上面并未列出所有变体,简单来说,语句A,B,C都是可以单独省略的。

对于增强for循环,就不多做介绍了,用的也比较多,基本结构就是:

 Integer[] arr = new Integer[]{1,2,3,4};
for (Integer a : arr){
  System.err.println(a);
}
 
List<String> list = new ArrayList<>();
//add str...
for (String str : list){
  System.err.println(str);
}

以上所述是小编给大家介绍的Java for循环详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • SpringBoot项目热部署的实现

    SpringBoot项目热部署的实现

    SpringBoot项目热部署是一种让开发人员在修改代码后无需重启应用即可看到更改效果的技术,通过使用SpringBoot的DevTools等工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Java线程池ThreadPoolExecutor的使用及其原理详细解读

    Java线程池ThreadPoolExecutor的使用及其原理详细解读

    这篇文章主要介绍了Java线程池ThreadPoolExecutor的使用及其原理详细解读,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务,线程池线程都是后台线程,需要的朋友可以参考下
    2023-12-12
  • 使用Idea或Datagrip导入excel数据的方法

    使用Idea或Datagrip导入excel数据的方法

    这篇文章主要介绍了使用Idea或Datagrip导入excel数据的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot处理跨域请求的四种方法

    SpringBoot处理跨域请求的四种方法

    在现代Web应用中,由于安全性和隐私的考虑,浏览器限制了从一个域向另一个域发起的跨域HTTP请求,解决这个问题的一种常见方式是实现跨域资源共享(CORS),SpringBoot提供了多种方式来处理跨域请求,本文将介绍其中的几种方法,感兴趣的朋友可以参考下
    2023-12-12
  • java代码实现银行管理系统

    java代码实现银行管理系统

    这篇文章主要为大家详细介绍了java代码实现银行管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Java多线程中的死锁详解

    Java多线程中的死锁详解

    这篇文章主要介绍了Java多线程中的死锁详解,死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,如果不提前预防或外界干扰,这些线程将无法执行下去,需要的朋友可以参考下
    2023-08-08
  • Springboot2 session设置超时时间无效的解决

    Springboot2 session设置超时时间无效的解决

    这篇文章主要介绍了Springboot2 session设置超时时间无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 一名Java高级工程师需要学什么?

    一名Java高级工程师需要学什么?

    作为一名Java高级工程师需要学什么?如何成为一名合格的工程师,这篇文章给了你较为详细的答案,需要的朋友可以参考下
    2017-08-08
  • 解析ConcurrentHashMap: 预热(内部一些小方法分析)

    解析ConcurrentHashMap: 预热(内部一些小方法分析)

    ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment的结构和HashMap类似,是一种数组和链表结构,今天给大家普及java面试常见问题---ConcurrentHashMap知识,一起看看吧
    2021-06-06
  • 聊一聊new对象与Spring对bean的初始化的差别

    聊一聊new对象与Spring对bean的初始化的差别

    这篇文章主要介绍了聊一聊new对象与Spring对bean的初始化的差别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论