1、Java中作用范围是禁止嵌套的,而在C/C++中则是允许的
在Java中,在方法(函数)内定义的变量,其作用范围(包括方法的参数)是从它定义的地方开始,到它所作用范围终结的位置处结束。如在方法的开始处定义了一个变量i,那么直到该方法结束处,都不能再定义另一个同名变量i。再如,如果在一个for循环体中定义了变量i,那么在这个for循环内不能再有同名变量,但出了for循环之后,是可以再次定义的。这就是作用域不能嵌套的意思。
而在C/C++中,作用域可以嵌套,甚至无限制地嵌套下去,这里每对大括号之间就是一个独立的作用域,内嵌套的同名变量覆盖外迁套的同名变量。如下表所示。
image.png
2、Java中类与方法中变量作用域可以嵌套
在Java中,类与方法之间作用域是可以嵌套的,可以把整个类看做一个大的作用域,它定义的字段(或称数据成员)可被方法中的同名字段所屏蔽,其行为类似于上表左侧所示的C/C++的作用域嵌套。
01 public class Varscape
02 {
03 public static void main(String args[])
04 {
05 int x=1;
06 System.out.println("x="+x);
07 }
08 private int x;
09 }
本例中的第5行所定义的x,作为类VarScope的数据成员,它的作用域是整个类,即从第02行到第09行之间,这个范围包括了第03行到第07行,而这个区域内的main方法,其内部也定义了一个名为x的变量,在这个范围内,第09行定义的变量x被第05行定义的变量x所覆盖
运行结果是 x=1
网友评论