1、在循环内

public class TestForLength {public static void main(String[] args) {List<String> strs = new ArrayList<String>();strs.add("1");strs.add("2");strs.add("3");strs.add("4");strs.add("5");for (int i = 0; i < getSize(strs); i++) {System.out.println(strs.get(i));}String[] strs2 = {"1","2","3"};for (int i = 0; i < getLength(strs2); i++) {System.out.println(strs2[i]);}}public static int getLength(String[] strs){System.out.println(2222);return strs.length;}public static int getSize(List<String> list){System.out.println(1111);return list.size();}
}

执行结果

获取list的长度
1
获取list的长度
2
获取list的长度
3
获取list的长度
4
获取list的长度
5
获取list的长度
获取数组的长度
1
获取数组的长度
2
获取数组的长度
3
获取数组的长度

结论:每一次循环都会重新获取一次结束条件
1、在循环外

public class TestForLength {public static void main(String[] args) {List<String> strs = new ArrayList<String>();strs.add("1");strs.add("2");strs.add("3");strs.add("4");strs.add("5");int size = getSize(strs);for (int i = 0; i < size; i++) {//i<*,每一次都会执行条件,建议放在循环前System.out.println(strs.get(i));}String[] strs2 = {"1","2","3"};int length = getLength(strs2);for (int i = 0; i < length; i++) {//i<*,每一次都会执行条件,建议放在循环前System.out.println(strs2[i]);}}public static int getLength(String[] strs){System.out.println(2222);return strs.length;}public static int getSize(List<String> list){System.out.println(1111);return list.size();}
}

执行结果

获取list的长度
1
2
3
4
5
获取数组的长度
1
2
3

结论:只获取一次条件

总结:当获取结束条件的语法较为复杂时,每次遍历都需要获取一次条件,则会造成很大的性能浪费,因此,在除了“需要动态获取条件(开发中几乎不存在)”的情况下,都建议先获取结束条件,并且该方法亦可以预防list/数组为空,导致程序异常(如下)

public static void main(String[] args) {List strs3 = getArrayList() ;//解决方案//int size3 = strs3 != null ? strs3.size() : 0//for (int i = 0; i <size3 ; i++) {for (int i = 0; i <strs3.size() ; i++) {//在此行报“java.lang.NullPointerException”异常}
}
public static List<String> getArrayList(){return null;
}

结果:

java.lang.NullPointerExceptionat com.yinghu.app.hjzl.test.TestForLength.main(TestForLength.java:22)

关于for循环控制条件在循环外还是循环内的问题相关推荐

  1. 循环外和循环内定义变量的区别

    一.代码展示 import java.util.HashMap; import java.util.Map;/*** @Package: raymond* @ClassName: Test* @Aut ...

  2. C++在循环内和循环外定义变量的差异(如何写出高效的for循环)

    写这篇文章的原因是我在问答平台看到的一个问题: C++内层循环中定义变量和在外面定义比影响大吗? 问题来自:http://ask.csdn.net/questions/176270 例如: for(i ...

  3. 5、条件判断语句和while循环语句

    条件判断和while循环 条件判断 条件判断语句(if语句) input() 函数 if-else语句 if-elif-else 语句 循环控制 while语句 break和continue whil ...

  4. 【JAVA SE】第三章 运算符、条件语句、switch结构、while循环、do…while循环、for循环、break关键字以及break和continue关键字

    第三章 运算符.条件语句.switch结构.for循环.break关键字以及break和continue关键字 文章目录 第三章 运算符.条件语句.switch结构.for循环.break关键字以及b ...

  5. C语言 条件判断语句、while循环、switch语句

    浮点数 注意事项:整型数字除于整数只会得到整数.如果要想得到浮点数,分母或分子要至少有一个为浮点数. 表达式 一个表达式是一系列运算符和算子的组合,用来计算一个值 运算符(operator)是指进行运 ...

  6. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  7. 汇编语言-013(DAS 、DAA与DAS、QWORD类型用SBB借位减法、编写指令将AX符号扩展到EAX,不能使用CWD、用SHR和条件判断指令将AL循环右移一位、SHLD、压缩十进制转换)

    1:DAS : SUB或SBB在AL中生成二进制结果,DAS(减法后的十进制调整)转压缩十进制格式 .386 .model flat,stdcall.stack 4096 ExitProcess PR ...

  8. python-if条件判断与while/for循环

    条件判断if 让计算机像人一样,能判断是非对错,根据条件做一些事情. if ''' ------ if代码结构:------- if 条件:代码体tips:同一缩进范围内的代码被视作同一代码体,pyt ...

  9. Python学习2 条件判断语句if,循环语句for while

    顺序,分支,循环结构 条件判断语句if 1)if-else- 2) if-elif-else 注意: 1)python中不支持switch-case语句 2)注意缩进! 3)区间范围内允许连续比较: ...

最新文章

  1. 争论不休的TF 2.0与PyTorch,到底现在战局如何了? | 技术头条
  2. python学习之if条件句的使用
  3. 单招计算机应用基础试题及答案,对口单招计算机应用基础模拟试题
  4. STM32F1如何切换到不同的型号
  5. NotificationManagerService使用详解与原理分析(一)
  6. jq如何在打开新的页面 关闭之前同链接的页面_教你如何“抢”其他域名的权重...
  7. python有理数_Python中的as_integer_ratio()用于减少给定有理数的分数
  8. C#循环 — break VS continue
  9. C#LeetCode刷题之#67-二进制求和(Add Binary)
  10. 提高网站性能之 —— 减少图片HTTP 请求的方案
  11. 微信小程序引入iconfont实现添加自定义颜色图标
  12. Office批量打印精灵4.2入门教程
  13. 安卓端airplay实现IOS屏幕镜像
  14. Slurm的前处理prolog和后处理epilog
  15. 废旧闲置的笔记本除了电脑回收,这两招也很实用!
  16. eclipse报错 错误: 找不到或无法加载主类
  17. 服装ERP软件首要的好处都有哪些?
  18. kafka集群搭建教程(使用自带的zookeeper)
  19. Hypermesh案例学习笔记
  20. FPS 游戏自瞄原理

热门文章

  1. 乐善有恒 京东健康全力缔造医疗健康公益服务创新样本
  2. Portraiture4.03一款适用于PS与LR的智能AI磨皮修饰滤镜插件
  3. python绘制每日的时序图_Python-100-Days
  4. curl直接传参,非json,持续访问用于使用接口生成数据库表之类
  5. 清理项目缓存的几种方法
  6. Java 方法的使用
  7. css实现多行省略号
  8. 手机阅读EPUB的四大利器
  9. 视频教程-快速排序算法-算法思想-Java
  10. 虽然2021年折磨了我一整年,但2022年我依旧笑对新年【CSDN 年度征文|回顾 2021,展望 2022】