java8循环怎么给全局变量累加_JAVA使用for循环会重复调用list.size()吗?
最近有朋友讨论说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()吗?相关推荐
- java循环while之等差数列均值_java基础_while 循环语句的定义及用法
一.while 循环语句的定义 在 C 语言中,while 循环是除了 for 循环外最常用的循环语句. 相对于 for 循环而言,while 循环更多地应用于循环次数未定的循环控制中. while ...
- java循环语句有哪三类_java中的循环语句有哪些
Java中有三种主要的循环结构: while 循环 do-while 循环 for 循环 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. 一.while循环 语 ...
- 循环队列的java结构_java数据结构之循环队列(数组实现)
package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...
- JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素.public ...
- java的多重循环实现杨辉三角_java使用for循环输出杨辉三角
思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. public ...
- c语言 用计数控制的循环实现正数累加求和,C语言循环结构程序设计实验五
福建农林大学实验报告 系(教研室):信息与机电工程系专业:机械设计制造及其自动化年级:2010 实验课程:C语言程序设计姓名:学号:实验室号: 计算机号:实验时间:2012.11.5 指导教师签字:成 ...
- java 循环list 对象_java计算list集合中重复对象的次数及for循环内外创建对象
我的需求:计算字符串集合中"数值"出现的次数,然后在for循环中计算"数值"及出现的次数 解决方案: 1.使用collections类中的frequency(集 ...
- java选择循环_java选择和循环结构
选择和循环结构 顺序 (1)按照程序的流程从上而下执行流程. 选择结构 If 概念 对条件判断[一个条件的结果:true:false] 执行判断结果,所想要处理的代码 如果(true){ System ...
- java中do loop的使用_Java中do-while循环——通过示例学编程(11)
作者:CHAITANYA SINGH 在上一篇教程中,我们讨论了while循环.在本教程中,我们将讨论java中的do-while循环.do-while循环类似于while循环,但是它们之间有一个区别 ...
最新文章
- 揭秘百度微服务监控:百度游戏服务监控的演进
- SaaS到底是什么,如何做?这份笔记讲明白了
- 删除元素(LintCode)
- 使用Github Action发布函数到阿里云serverless平台
- 学习scorllview
- 计算机基础:离散数学和完备性
- Win7+xp命令行 一键修改IP、DNS
- SyntaxError: Non-ASCII character '\xe9' in file...ubuntu系统下python运行时提示编码格式不正确以及提示No module named xxx
- python计算球坐标系的积分_python – n球面坐标系到笛卡尔坐标系
- python 爬虫难吗_python写爬虫难吗
- 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)
- Java中Object转Map类型,Map转Object类型
- python论文怎么写_用Python写一个论文降重工具
- Xshell脚本实现自动登陆||自动登陆的几种方式。
- 算法:Climbing Stairs(爬楼梯) 6种解法
- 去除数字的正则表达式
- revit出图建模【尺寸定位标注】功能
- 信息系统项目管理师 - 项目立项管理
- JS实现在线汉字笔画练习特效(平板移动端可用)
- java profile cpu_Java进程高CPU使用调查方法简介