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

       

    个人整理答案:

       

       

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/10767732.html
Copyright © 2020-2023  润新知