美文网首页Java技术文章技术文代码改变世界
【精致Java教程】27:变量的作用域

【精致Java教程】27:变量的作用域

作者: 许宏川 | 来源:发表于2015-06-09 22:54 被阅读681次

常量、变量与运算符(一)这篇文章中提到过变量有三个属性:变量名,数据类型和作用域。因为那会还没讲分支结构和方法所以作用域还没有介绍。

要解释变量的作用域其实就两点

  • 声明语句所在的{ }内才可用

示例代码:

public class Coverage {
    static String s1 = "s1"; // 整个类可用
 
    public static void main(String[] args) {
        String s2 = "s2"; // main方法内此行以下可用
        
        switch (s1)
        {
            case "s1":
                System.out.println(s1);
                break;
            case "s2":
                System.out.println(s2);
                break;
        }
        
        if (true) {
            String s3 = "s3"; // 仅if结构内可用
            System.out.println(s3);
        }
        
        for (int i = 0; i < 1; i++) {
            String s4 = "s4"; // 仅for循环内可用
            System.out.println(s4);
        }

    }

}

上述代码中,s1所在{ }包括了整个类,所以整个类都可访问。s2所在的{ }是包住了整个mian方法,所以整个main方法范围内都可用,同理s3仅if结构内可用,s4仅for循环内可用。

  • 除成员变量外,在声明语句的下文才可用

示例代码:

public class Coverage {
 
    public static void main(String[] args) {
        
        switch (s1)
        {
            case "s1":
                System.out.println(s1);
                break;
            case "s2":
                System.out.println(s2);
                break;
        }
        
        String s2 = "s2"; // main方法内此行以下可用
        
        if (true) {
            String s3 = "s3"; // 仅if结构内可用
            System.out.println(s3);
        }
        
        for (int i = 0; i < 1; i++) {
            String s4 = "s4"; //仅for循环内可用
            System.out.println(s4);
        }

    }

    static String s1 = "s1"; // 整个类可用

}

如上,我把s1放在类的最下方,把s2,放在switch下方。

编译出错:

<pre>
Coverage.java:12: 错误: 找不到符号
System.out.println(s2);
^
符号: 变量 s2
位置: 类 Coverage
1 个错误
</pre>

找不到s2,但是s1并不会报错。所以说成员变量无论放在类的哪个位置,所有方法均可使用。但是方法内的局部变量的作用域是至上而下的,只有声明语句的下文可用。例如上面的例子中s2不能在其上的switch代码块使用,但是可以在其下的if结构内和for循环里使用。

本文所用代码:百度网盘

相关文章

  • 【精致Java教程】27:变量的作用域

    在常量、变量与运算符(一)这篇文章中提到过变量有三个属性:变量名,数据类型和作用域。因为那会还没讲分支结构和方法所...

  • 作用域和作用域链

    作用域和作用域链 作用域 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在Java...

  • 从零开始复习Java-变量、常量、作用域

    变量(Variable) Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。 变量作用域 ...

  • ECMAScript 6入门笔记

    1. 作用域变量 作用域就是变量的作用范围。也就是你声明一个变量以后,这个变量可以在什么场合下使用。以前的Java...

  • 第2模块第1章21函数—作用域

    作用域 在Python中函数就是一个作用域,局部变量放置在其作用域中 C Java中作用域{}已经生成,作用域向上...

  • 第四章 作用域和内存问题

    变量的作用域? 变量作用:起作用域:区域,范围变量起作用的地方 变量的生命周期,变量生于这个作用域,死于这个作用域...

  • 闭包原理

    忠于兴趣,诚待文字,取悦自己,理解他人。 变量 作用域 作用域链 闭包 0-1javascript变量 1Java...

  • JS作用域链

    作用域 变量的作用域 变量的作用域有两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,...

  • 变量作用域(27)

    讲到了函数就必须介绍变量的作用域相关。 作用域指的是变量的有效范围。变量并不是在哪个位置都可以访问的,访问权限取决...

  • 【前端】-023-JavaScript-进阶篇-变量作用域

    变量作用域 JavaScript中变量的作用域 采用静态作用域(变量定义的位置决定了变量的引用) 没有块级作用域,...

网友评论

    本文标题:【精致Java教程】27:变量的作用域

    本文链接:https://www.haomeiwen.com/subject/reljqttx.html