字段,属性,Field
当一个变量被声明在类下面
变量就叫做字段 或者属性、成员变量、Field
比如变量i,就是一个属性。
那么从第2行这个变量声明的位置开始,整个整类都可以访问得到
所以其作用域就是从其声明的位置开始的个类
1 2 3 4 5 6 7 8 9 10 | public class HelloWorld { int i = 1 ; int j = i; //其他的属性可以访问i public void method1(){ System.out.println(i); //方法1里可以访问i } public void method2(){ System.out.println(i); //方法2里可以访问i } } |
参数
如果一个变量,是声明在一个方法上的,就叫做参数
参数的作用域即为该方法内的所有代码
其他方法不能访问该参数
类里面也不能访问该参数
1 2 3 4 5 6 7 8 9 10 11 12 | public class HelloWorld { public void method1( int i){ //参数i的作用域即方法method1 System.out.println(i); } public void method2(){ System.out.println(i); //method2 不能访问参数i } int j = i; //类里面也不能访问参数i } |
局部变量
声明在方法内的变量,叫做局部变量
其作用域在声明开始的位置,到其所处于的块结束位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class HelloWorld { public void method1() { int i = 5 ; //其作用范围是从声明的第4行,到其所处于的块结束12行位置 System.out.println(i); { //子块 System.out.println(i); //可以访问i int j = 6 ; System.out.println(j); //可以访问j } System.out.println(j); //不能访问j,因为其作用域到第10行就结束了 } } |
当局部变量和成员变量同时存在时,局部变量赋值了,优先使用局部变量的值,,如果局部变量没赋值,就使用成员变量的值
1 2 3 4 5 6 7 8 9 10 11 | public class HelloWorld { int i = 1 ; //属性名是i public void method1( int i){ //参数也是i System.out.println(i); } public static void main(String[] args) { new HelloWorld().method1( 5 ); //结果打印出来是 1还是5? } } |