最近有朋友讨论说for循环里不要用list.size(),这样会导致每次都调用一次list.size()接口会耗性能,建议我们在外面使用一个变量来存储这个list.size()的值再放到循环里面,真的是这样吗?我做了个小测试,代码如下:

public class Test2 {

public static void main(String[] args) {

List list = new ArrayList();

list.add("1");

list.add("2");

for (int i = 0; i < list.size(); i++) {

System.out.println(i);

}

}

}

这里将list.size()放在了for循环里,按朋友的说法,这里应该会调用多次。

接下来我查看了字节码发现,这里确实会调用多次list.size()方法,字节码如下:

具体字节码指令解析可查看:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html

接着查看了ArrayList调用size()方法的源码是直接返回一个int 型的 size变量的,而这个size变量是每次新增和删除都会改变这个size的值

结论:经过网友们热情的探讨与更正,for循环里会多次调用list.size(),list.size()方法会直接返回一个声明在类中的size全局变量,虽然这个size会直接保存在堆中,但每次发生函数调用确实会发生压栈出栈的性能开销。

java8循环怎么给全局变量累加_JAVA使用for循环会重复调用list.size()吗?相关推荐

  1. java循环while之等差数列均值_java基础_while 循环语句的定义及用法

    一.while 循环语句的定义 在 C 语言中,while 循环是除了 for 循环外最常用的循环语句. 相对于 for 循环而言,while 循环更多地应用于循环次数未定的循环控制中. while ...

  2. java循环语句有哪三类_java中的循环语句有哪些

    Java中有三种主要的循环结构: while 循环 do-while 循环 for 循环 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. 一.while循环 语 ...

  3. 循环队列的java结构_java数据结构之循环队列(数组实现)

    package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...

  4. JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素.public ...

  5. java的多重循环实现杨辉三角_java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. public ...

  6. c语言 用计数控制的循环实现正数累加求和,C语言循环结构程序设计实验五

    福建农林大学实验报告 系(教研室):信息与机电工程系专业:机械设计制造及其自动化年级:2010 实验课程:C语言程序设计姓名:学号:实验室号: 计算机号:实验时间:2012.11.5 指导教师签字:成 ...

  7. java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象

    我的需求:计算字符串集合中"数值"出现的次数,然后在for循环中计算"数值"及出现的次数 解决方案: 1.使用collections类中的frequency(集 ...

  8. java选择循环_java选择和循环结构

    选择和循环结构 顺序 (1)按照程序的流程从上而下执行流程. 选择结构 If 概念 对条件判断[一个条件的结果:true:false] 执行判断结果,所想要处理的代码 如果(true){ System ...

  9. java中do loop的使用_Java中do-while循环——通过示例学编程(11)

    作者:CHAITANYA SINGH 在上一篇教程中,我们讨论了while循环.在本教程中,我们将讨论java中的do-while循环.do-while循环类似于while循环,但是它们之间有一个区别 ...

最新文章

  1. 揭秘百度微服务监控:百度游戏服务监控的演进
  2. SaaS到底是什么,如何做?这份笔记讲明白了
  3. 删除元素(LintCode)
  4. 使用Github Action发布函数到阿里云serverless平台
  5. 学习scorllview
  6. 计算机基础:离散数学和完备性
  7. Win7+xp命令行 一键修改IP、DNS
  8. SyntaxError: Non-ASCII character '\xe9' in file...ubuntu系统下python运行时提示编码格式不正确以及提示No module named xxx
  9. python计算球坐标系的积分_python – n球面坐标系到笛卡尔坐标系
  10. python 爬虫难吗_python写爬虫难吗
  11. 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)
  12. Java中Object转Map类型,Map转Object类型
  13. python论文怎么写_用Python写一个论文降重工具
  14. Xshell脚本实现自动登陆||自动登陆的几种方式。
  15. 算法:Climbing Stairs(爬楼梯) 6种解法
  16. 去除数字的正则表达式
  17. revit出图建模【尺寸定位标注】功能
  18. 信息系统项目管理师 - 项目立项管理
  19. JS实现在线汉字笔画练习特效(平板移动端可用)
  20. java profile cpu_Java进程高CPU使用调查方法简介

热门文章

  1. JVM性能优化, Part 2 ―― 编译器
  2. 压缩目录Linux常用的几种文件压缩解压方法
  3. C#“.NET研究”类类型
  4. 巧妙共享Win7/Vista/XP文件夹权限
  5. CSS3 Media Queries:移动 Web 的完美开端
  6. 维基链超级节点竞选开展如火如荼
  7. 支持比特币支付的商家中有90%接受了BCH
  8. 2019年pta作业第二题——求最大值及其下标
  9. 使用js实现微信小页面翻页的原理介绍
  10. string之substring的用法