编译并反编译BeforeFor和InFor,对比如图《javap》,截图中省略了前半部分,只有类名不同。
可见方法中堆大小同样为2,用来存储本地变量str和i;
3个局部变量,分别指向参数args、局部变量str、局部变量i;
一个参数,args
可以看到区别有2处:
1 str和i的存储位置相反
2 Before中的str的作用域为方法体内部,而In中为for循环体内部。
根据字节码可以看出:
引用占用的内存分配时机相同,计算时间相同,占用内存相同。
所谓分配内存时机相同,是说,java编译过程中可以计算出方法一共需要多少局部变量,在运行时要在进入方法时一次性申请全部变量所需引用或基本类型所需的堆大小。
所以我建议
如果变量不需要在循环体外部继续使用,应将声明放在循环体内部,原因如下:
1 从可读性和安全性角度考虑,应尽量减小作用范围,声明写在for内部可以防止变量污染和变量的误用。
2 从性能角度考虑,在不考虑运行时优化的情况,在循环体内部声明的变量在退出循环体后声明任何一个变量(既改变局部变量表,如 int a=1),str就可以被垃圾回收,而声明在循环体前面的变量要在方法结束之后才能被回收。
来自杜天微的私人邮箱
(javap.png)
- 大小: 67.9 KB
分享到:
相关推荐
1. **初始化**:这部分通常包含一个或多个赋值语句,可能涉及声明新的变量。在递归下降解析中,我们需要一个函数来处理这个部分,例如`parseInitialization()`。 2. **条件**:这是控制循环是否继续执行的关键部分...
### C++ if语句、决策语句块和变量作用域详解 #### 一、引言 在计算机编程中,能够根据不同的条件改变程序的行为是非常重要的。C++作为一种强大的编程语言,提供了多种方式来实现这样的功能。本文将详细介绍C++中的...
do……while 和 while……do 之间的区别是前一个循环一遍再判断,后一个判断以后再循环。 五、静态变量和静态函数 静态全局变量的作用域限制在定义该变量的源文件内,避免在其它源文件中引起错误。static 局部变量...
Python 变量、运算符和语句的基础 Python 变量是存储数据的容器,变量的类型可以是数字、字符串、列表、元组、字典等。数字型变量可以是整数、长整数、浮点数等。 1. 数字型变量: * 整数:Int_var = 1 * 长整数...
为块命名允许在块内部定义局部变量,并可以通过其他语句来调用整个块,提高代码的复用性和可读性。 #### 三、程序控制语句 程序控制语句包括**条件语句**、**case语句**和**循环语句**。 ##### 条件语句 条件...
1. 初始化表达式:通常用于设置循环变量的初始值,只在循环开始前执行一次。 2. 条件表达式:检查是否继续执行循环。如果表达式的值为真(非零),则执行循环体;如果为假(零),则跳出循环。 3. 更新表达式:在...
此外,为了确保正确性,还需要编写测试用例,对新添加的for循环功能进行单元测试,包括各种边界条件和错误情况,如无限循环、未声明的变量等。 总结来说,"pl0 for 添加处理"是编译原理学习的一个实践项目,它涉及...
在C++编程语言中,`for`语句是一种常用的循环结构,它允许程序员按照特定条件重复执行一段代码。在这个题目中,我们的目标是找到1到100之间所有3的倍数的和。下面我们将详细解释如何使用`for`语句来解决这个问题。 ...
每个变量、函数和语句都有自己特定的功能,想恰当地使用变量和函数,就要准确地知道它是如何设计的。了解后,运用他们就可以用来完成特定的任务。
在C语言中,For语句是一种常用的循环语句,用于重复执行一段代码。For语句的基本格式为: for (初始化表达式; 条件表达式; 更新表达式) { 代码块 } 其中,初始化表达式用于初始化循环变量,条件表达式用于判断...
循环变量的赋值是指For循环语句中循环变量的初值和终值的设置;循环体是指For循环语句中要执行的代码块;循环控制是指For循环语句的执行过程中对循环变量的控制。 三、For循环语句的执行过程 For循环语句的执行...
在for语句中使用多个变量
在VB(Visual Basic)编程语言中,`For`语句和`Do`语句是两种常用的循环控制结构,它们在处理重复性任务时起到关键作用。然而,它们有着不同的使用场景和特性。让我们深入探讨一下这两者之间的差异,并通过解决经典...
①FOR <变量>:=<表达式> TO <表达式> DO <语句> ②FOR <变量>:=<表达式> DOWNTO <表达式> DO <语句> 其中,语句①的循环变量的步长为2,语句②的循环变量的步长为-2。 (3)增加运算:++ 和 --。 (4)增加一维数组...
本文将深入探讨for循环语句在编译过程中的翻译方法,特别是结合LR分析法和四元式表示。对于学习编译器设计的同学来说,理解这些概念至关重要。 首先,for循环语句是程序设计语言中的一种结构化控制语句,它提供了...
变量与条件语句在Twine游戏设计中的案例分析.docx Twine引擎开发:变量与条件语句_(12).调试技巧:变量与条件语句常见问题及解决方法.docx Twine引擎开发:变量与条件语句_(13).优化建议:提高变量与条件语句...
在编程语言中,循环结构是不可或缺的一部分,它们用于重复执行一段代码直到满足特定条件为止。...在编程过程中,记住`for`语句的灵活性和强大性,它可以与其他控制结构(如`if`语句)结合,实现更多功能。
for语句是C语言中最常用的循环结构,它的灵活性体现在它可以同时处理循环变量的初始化、循环条件检查和循环变量更新。for语句的基本格式如下: ```c for(初始化; 循环条件; 更新) { // 循环体 } ``` 在案例5.1中...
根据提供的文档信息,我们可以深入探讨FOR循环语句的翻译程序设计,特别关注LL(1)分析方法以及如何生成四元式表示的中间代码。 ### 1. 系统描述 #### 1.1 问题描述 该课程设计的目标是设计、实现并调试一个能够...
这里的`s`变量并未在代码中明确声明和初始化,按照VB的习惯,未声明的变量会被默认视为变体型(Variant),并被初始化为0。 5. **输出结果**: - 第一次外层循环(`i=0`),内层循环不执行,输出为空。 - 第二次...