java怎么创建局部变量_Java使用getter in for循环或创建一个局部变量?-程序员宅基地

技术标签: java怎么创建局部变量  

作为

Rogério answered,在循环之外获取对象引用(Object object = example.getValue();)可能比在循环中调用getter更快(或至少不会更慢),因为

在“最糟糕”的情况下,example.getValue()可能会在背景中做一些非常计算上昂贵的东西,尽管getter methods应该是“微不足道的”.通过分配引用一次并重新使用它,您只需执行一次昂贵的计算.

>在“最好”的情况下,example.getValue()做一些简单的例如返回值;因此在JIT编译器inlines the code之后将其分配给循环将不再昂贵.

然而,更重要的是两个语义之间的语义差异及其在多线程环境中的可能影响:如果对象示例的状态以导致example.getValue()返回对不同对象的引用的方式进行更改,那么它是可能的是,在每次迭代中,doSomething(Object object)方法将通过直接调用doSomething(example.getValue())来实际对Object的不同实例进行操作.另一方面,通过在循环之外调用一个getter,并设置一个对返回的实例的引用(Object object = example.getValue();),doSomething(object);将对n次迭代操作对象n次.

这种语义差异可能导致多线程环境中的行为与单线程环境中的行为截然不同.此外,这不需要是实际的“内存中”多线程问题:如果exam​​ple.getValue()依赖于例如数据库/硬盘/网络资源,这个数据在循环的执行过程中可能会发生变化,这样即使Java应用程序本身是单线程的,也可能返回不同的对象.因此,最好在循环中考虑您实际想要完成的任务,然后选择最能反映预期行为的选项.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42509196/article/details/114771716

智能推荐

Python2之windows输出乱码及倒计时代码处理_python 2 window 乱码-程序员宅基地

文章浏览阅读1.1k次。#!/usr/bin/python# -*- coding: utf-8 -*-import osimport sysimport timeimport platform# 乱码处理sys_encoding = sys.getfilesystemencoding()def printcn(msg): print(msg.decode('utf-8').encode(sys_..._python 2 window 乱码

【Flink】状态管理-程序员宅基地

文章浏览阅读2.4k次,点赞36次,收藏46次。根据当前的输入可以直接转换得到输出结果,这种鼻子就是无状态算子,如map,flatMap,filter。

maven 排除配置文件打包_maven 打包排除配置文件-程序员宅基地

文章浏览阅读3.8k次。如果你想通过pom.xml文件的配置实现的话,你可以这样1、打jar包时过滤配置文件src/main/resources**/*true..............2、在plugins中添加插件org.apache.maven.pluginsmaven-resources-plugincopy-resourcespackagecopy-resourcesUTF-8${project.build.d..._maven打包排除配置文件

泰克Tektronix DPO5204B示波器-程序员宅基地

文章浏览阅读43次。测量电子电路或组件中随时间变化的电压或电流信号,以显示振幅、频率和上升时间等。泰克 DPO5204B 示波器提供出色的信号保真度,具有 2 GHz 带宽和 10 GS/s 采样率,以及高级分析和数学功能,可在您的工作台和实验室中使用。FastFrame 分段存储器采集模式,具有高达 290,000 段和每秒 >310,000 个波形的捕获率。USB2.0、以太网、USB 电源、MOST、BroadR-Reach 的一致性测试选项。内存、高级抖动、串行数据、功率和宽带 RF 的可选分析。_dpo5204b

电脑键盘按键功能详解_键盘键的含义 csdn-程序员宅基地

文章浏览阅读263次。在不同的软件中,起为其定义的相应功能的作用,也可以配合其他的键起作用。对于键盘,大伙都熟悉吧,它是一种电脑运行输入指令和数据的一种装备,上面的每一个按键都有不同的动能,只要合理使用,就能起到事半功倍的效果,那么,键盘按键有什么功能呢?12、end键:结尾键,在文字编辑时,能移动到该行的末尾位置,与home键相呼应。11、home键:原位键,在文字编辑时,可以定位于该行的起始位置,和ctrl键一起使用能定位到文章的开头位置。9、insert键:插入键,在文字中插入字符,是一个循环键,再按一下则变成改写状态。_键盘键的含义 csdn

ComponentOne.NET仪表板布局控件 — 实现可视化数据大屏展示-程序员宅基地

文章浏览阅读524次。概述.NET开发领域的总体趋势是互操作性,葡萄城全功能 .NET控件集 ComponentOne 在2018将延续这一趋势:无论是 .NET平台,ASP.NET Core,Xamarin还是未来计划中的XAML标准,互操作性是所有应用程序的关键,这也将作为我们未来产品规划的核心,我们将继续创新和加强现有产品。WinForm 界面控件WinForm 作为桌面业务应用程序的主流平台仍然很强大。Comp..._winform 大屏组件

随便推点

Python打印乘法表, format()_python打印逆乘法表右对齐-程序员宅基地

文章浏览阅读1.1k次。打印乘法表简单,可以用for i in range(1,n+1): for j in range(1,n+1): print(i*j,' ', end='') print()轻松打印出来。问题在于对齐。format()解决了这个问题print('{:>4}'.format(i*j),end='')这条语句是这段代码的核心,解决了对齐问题。列宽4,右对齐'''乘法表用Python来创造一个提示用户输入数字的乘..._python打印逆乘法表右对齐

php hush,login.php-程序员宅基地

文章浏览阅读67次。# MantisBT - A PHP based bugtracking system# MantisBT is free software: you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software F..._require_api( 'authentication_api.php' );

CVE-2019-0708漏洞实战_cve-2019-0708 rce-程序员宅基地

文章浏览阅读162次。道虽远,行则易至;儒虽难,坚为易成_cve-2019-0708 rce

非线性规划——基于matlab学习(fminbnd fmincon)_matlab中fminbnd函数用法-程序员宅基地

文章浏览阅读3.6k次,点赞5次,收藏30次。序言小说明根据MATLAB目标函数和约束条件的不同,提供了fminbnd,fmincon,quadprog,fseminf,fminimax,fgoalattain,lsqlin等函数了求解不同类型的非线性规划问题(1)fminbnd函数用于求解一元非线性规划问题。其调用格式:x=fminbnd(fun,x1,x2) 返回目标函数f(x)在区间(x1,x2)上的极小值。x=fminbnd(fun,x1,x2,option); option为指定优化参数选项。| Val_matlab中fminbnd函数用法

ROS实现多机通讯(在从机上遥控主机上的小乌龟)_ros多机通信,小乌龟指令无效-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏26次。主机ifconfig查看本机ip为10.161.223.107(主机的IP)输入export ROS_IP=10.161.223.107开启roscore找到ROS_MASTER_URI=http://10.161.223.107:11311/开启一个新的终端,先输入export ROS_IP=10.161.223.107(主机的IP)expo..._ros多机通信,小乌龟指令无效

第一个SpringBoot开发及腾讯云服务器部署systemctl status firewalld.service-程序员宅基地

文章浏览阅读1.5k次。前言代码路径:https://github.com/Jackpy-node/springboot.git遇到的问题解决:Linux下mysql经常自动停止挂掉重启的完美解决方式新建项目1、新建SpringBoot项目2、项目类型默认Maven Project,包类型选择生成War或者Jar3、选择Spring Web项目,并选择SpringBoot版本,..._systemctl status firewalld.service