一. 代码块的定义
任何大括号封装的,得到的都是一个区块,可以称为代码块。如果在代码块的前面加上if(), 那么这就叫做if代码块;如果加的是
public static void main(String[] args),那么这就叫做主函数代码块。这些都相当于代码块的名称。如果什么都不加,那么就称为局部代码块。
注意:上面的例子为什么能够输出if语句的A,条件表达式为false,为什么能够成立?
二. 深入解析局部代码块
有名字的都叫什么名字代码块,如i类代码块,主函数代码块,if代码块,如果代码块前面没有语句,那么就叫做局部代码块。
有局部代码块,也有局部变量。
举例来解析局部变量。下面的源代码在运行的时候,DOS会报错,显示System.out.println("over......."+m)语句找不到符号m,
究其原因就在于m是上面局部代码块里的变量,不适合于外面的范围,变量有自己的作用域。这种没有名字的局部代码块的作用就体现在这,虽然运行起来和顺序结构很相似,但还是有区别的。
{}的作用就是能划定作用范围,只在括号内起作用。
探讨一下例子背后的原理:jvm执行到int m=89;时,内存中会开辟一小块区间,命名为m,赋值为89,随着输出语句的结束以及}符号的到来,名为m的小块内存就被会释放,也就是说不存在叫m的内存块。为什么m内存块会被释放,原因在于m能够作用的范围结束了。如果继续保留,就会浪费内存空间。jvm运行到System.out.println("over......."+m)语句时,压根就没有叫做m的内存块变量了。
这里再强调一下局部代码块的作用:如果程序中定义的变量非常多,但是变量的作用范围非常小,在这里作用后,后面就不再起作用,为了节约内存,我们就会将此变量的运算封装在局部代码块里,运算到后面的时候,此变量就会被释放,节省内存。这里还要说一点,虽然计算机内存很大,但是虚拟机可操作的内存并不大,因此,必要的时候,就要优化程序。
局部代码块可以定义局部变量的生命周期。
借由局部代码块的概念,我们来探讨一下局部变量。
注意:只要是主函数里的变量,都被称作局部变量。