• 解析java作用域


    解析java作用域

    1.含义

    java作用域指的是标识符的有效范围

    2.为啥需要这个?

    保证变量在合理的范围内进行使用,而不是定义一个变量,哪里都能用的那种。

    3.如何使用?

    3.1 标识符有效范围的大小

    a.若声明在类体中,则整个类是可见的

    在类Practice的类体中声明一个number变量,可以发现里面的所有方法都可以使用它

    示例代码

    public class Practice {
        static int number;
        public static void main(String[] args) {
            System.out.println("main当中输出number的值"+number);
            show();
        }
        public static void show(){
            System.out.println("show当作输出number的值:"+number);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例代码运行截图
    在这里插入图片描述

    b.声明在方法体中,整个方法是可见的

    在方法体中定义一个result,发现main方法是使用不了result变量的,result只有在当前方法体里面才可以进行使用

    示例代码

    public class Practice {
        static int number;
        public static void main(String[] args) {
    //        String rs=result;  main方法里面是拿不到result变量的
            show();
        }
        public static void show(){
            String result="加油!!!坚持就是胜利!!!";
            for (int i = 0; i <5; i++) {
                System.out.println(result+(i+1));
            }
            if(true){
                System.out.println("进入if里面调用result的值为: "+result);
            }
            System.out.println("方法的最后,再次输出result的值为: "+result);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    示例代码运行截图
    在这里插入图片描述

    c.声明在分支结构中(if)、循环结构里,只在当前的{}可见

    c.1 循环遍历一个数组时候,你发现循环变量i是只能存在于for方法体中

    c.2 涉及到两数交换时,if里面定义的temp变量也仅仅只存在于if那个对应的{}中

    示例代码

    public class Practice {
        static int number;
        public static void main(String[] args) {
            int[] a={1,88,2,4};
            for (int i = 0; i <a.length; i++) {
                System.out.print(a[i]+" ");
            }
            //for循环外面是获取不到i的值的,你可以把注释去掉运行试试
            //System.out.println(i);
            int m=10,n=90;
            //变量交换环节
            System.out.println("\n交换前 m,n的值为: "+m+" "+n);
            if(m<n){
                int temp=m;
                m=n;
                n=temp;
            }
            System.out.println("交换后 m,n的值为: "+m+" "+n);
            //System.out.println(temp);
            //你会发现if外面是不能获取到temp的值的,temp的值只在它定义的那个if里面有效
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    示例代码运行截图
    在这里插入图片描述

    3.2 java是通过什么来划分作用域的?

    作用域查找规则:

    ​ 内层作用域可以使用外层作用域的标识符

    ​ 外层作用域不能使用内容作用域的标识符

    分析:

    内层可以使用外层,是因为外层的作用域是包含了内层部分的,而内层作用域仅存在当前的{},作用域并没有覆盖外层,因此,外层使用不了内层的作用域。

  • 相关阅读:
    常见凭证获取方法
    ios上架上传构建版本的windows工具
    ArcGIS 气象风场等示例 数据制作、服务发布及前端加载
    PIC单片机1——按钮测试
    Python Day6 爬虫-lxml和多线程
    PCB 二:AD 原理图绘制以及PCB绘制
    C++:过滤中文字符
    微信小程序:js处理一段文字,根据句号或者分号进行换行
    【从头构筑C#知识体系】2.1 泛型
    焱融全闪系列科普|固态存储核心技术 SSD
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/125627063