Java知识系统回顾整理01基础03变量06变量的作用域

一、变量根据所处的位置对应不同的名称

  • 变量处于不同的位置,有不同的名称 
  • 名称分别是 
    • 字段,属性 
    • 参数 
    • 局部变量 
  • 不同名称的变量,其作用域是不一样的

   

二、字段,属性,Field

  • 当一个变量被声明在类下面,该变量就叫做字段 或者属性成员变量Field
    • 比如如下代码中的变量i,就是一个属性。
      • 那么从第2行这个变量声明的位置开始,整个类都可以访问的到该变量
  • 所以其(字段、属性、成员变量、Field)作用域就是从其声明的位置开始的整个类

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

    }

}

   

三、参数

  • 如果一个变量,是声明在一个方法上的,就叫做参数
  • 参数的作用域即为该方法内的所有代码
  • 其他方法不能访问该参数
  • 类里面也不能访问该参数

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

}

   

四、局部变量

  • 声明在方法内的变量,叫做局部变量 
  • 其作用域在声明开始的位置,到其所处于的块结束位置

public class HelloWorld {

    public void method1() {

        int i  = 5;  //作用域是从该行开始,到method1方法的右括号结束

        System.out.println(i);

        {            //子块

            System.out.println(i); //可以访问i

            int j = 6;//j的作用域在子块内部

            System.out.println(j); //可以访问j

        }

        System.out.println(j); //不能访问j,因为其作用域在子块内,子块外无效

    }

}

   

五、练习及答案

题目:

属性的作用域在方法中,参数的作用域也在方法中,如果属性和参数命名相同了的话? 那么到底取哪个值?

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?

    }

}

   

官方答案:

输出是5,当访问的变量被多个作用域影响的时候,按照就近原则取

   

个人整理答案:

   

   

猜你喜欢

转载自www.cnblogs.com/xlfcjx/p/10767732.html
今日推荐