请问一下ArrayList 中 removeall 源码的问题

[复制链接]
查看11 | 回复2 | 2021-1-27 06:32:09 | 显示全部楼层 |阅读模式
privatebooleanbatchRemove(Collectionc,booleancomplement){
finalObject[]elementData=this.elementData;
intr=0,w=0;
booleanmodified=false;
try{
for(;r -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用楼主qq_38951372的回复:privatebooleanbatchRemove(Collectionc,booleancomplement){
finalObject[]elementData=this.elementData;
intr=0,w=0;
booleanmodified=false;
try{
for(;r
这个数组在后面会在循环里被多次访问,如果不创建局部变量就要先找到this再通过this找到elementData有局部变量能直接找到elementData算是一种优化吧如果不这么写虚拟机也可能自动进行这种优化final在局部变量的修饰上只有编译期的检查作用目前版本来说在运行期局部变量加不加final是没啥区别的编译后的字节码有final的局部变量和没final的局部变量是一样的不过以后可能会有针对这方面的优化也说不定目前来说就是个语法上的严格校验
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
谢谢,后来查到final可以看成是内联函数提高效率的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行