• 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,当访问的变量被多个作用域影响的时候,按照就近原则取

       

    个人整理答案:

       

       

  • 相关阅读:
    [CLRS][CH 19]斐波那契堆
    [CLRS][CH 20] van Emde Boas 树
    [C++11] lambda函数
    常用网站整理
    词法分析原理 Lexical Analysis
    ie8开发人员工具无法使用,按f12任务栏里出现任务,但是窗体不弹出
    IE6下zindex犯癫不起作用bug的初步研究(转)
    ie8无法浏览png格式图片
    jquery.pngFix在最新的jquery1.7上无效的问题解决方法!
    用clearfix:after消除(DIV块因内部浮动而高度收缩的问题)(转)
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/10767732.html
Copyright © 2020-2023  润新知