这不是定义在前在后的问题,外部的int x=100;也可以定义在之后,内部的int x=100也可以定义在之前,这是“作用域”的问题
外部作用域“会封入内部作用域”,对内部作用域是通明的,也就是说内部作用域可以访问外部作用域中的变量和方法
所以你在这两个{}之中定义的同名变量x会发生冲突,相当于你是同一个{}定义了两个相同变量
你的int x=100和int x=30都是局部变量,全局变量在方法的外面,你可以试着将int x=100放在第二行试试,前在加个static ,就这样写试试看:static int x=100;
首先,你第二个 int x 不是全局变量,而是是局部变量。全局属性是直接定义在类里面的(不在任何方法中),你的这两个x都是局部变量,而且重名,所以编译不能通过
你这两个都是局部变量,而且在一个方法里会显示重复定义,把INT x=30 前边的int去掉变为对x重新赋值就可以编辑过去了,不过之前的x=100就没意义了。