博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九天学会Java,第六天,变量作用域
阅读量:6082 次
发布时间:2019-06-20

本文共 1641 字,大约阅读时间需要 5 分钟。

  • 变量和数据类型,赋值和输出
  • 算术运算
  • 选择结构
  • 循环结构
  • 函数定义,函数调用
  • 变量作用域 <--
  • 栈,程序运行的基石
  • 面向对象
  • 异常处理
  • 语言提供的公用包

经过前面的学习,我们发现变量有时候定义在main函数里,有时候写在循环里,有的时候又写在自定义函数里,那么什么的变量的作用域呢

首先作用域是由花括号的位置决定的。

从函数看局部变量作用域

函数内定义的变量被称为局部变量。

局部变量的作用范围从声明开始,直到包含它的块结束(块就是{}内的代码)。

函数的参数范围涵盖整个方法。参数实际上是一个局部变量。

public class SixthScopeLesson {    /**     * a在整个函数内都是可见的     * b在定义之后,直到 } 号之前都是可见的     * @param a     */    public static void foo(int a) {        System.out.println(a);        int b = 10;        System.out.println(b);    }    public static void main(String[] args) {        foo(10);        /**         * 在main函数里,就访问不到foo(int a)里的a         * 以及foo函数里定义的b         */    }}

从for循环看局部变量作用域

for循环的初始化部分声明的变量,其作用范围在整个循环。

但循环体内声明的变量其适用范围是从它声明到循环体结束。它包含如下所示的变量声明:

for(int i = 0; i < 10; i++ /*这里也能访问i,但是不能访问j*/) {    int j = i + 1;   /* 从这里到 } 都能访问到j */    System.out.println(i);    System.out.println(j);}/*** 出了 } 之后,i和j都不能再访问*/

image

嵌套代码块看变量作用域

int i = 3;if (i >= 3) { /* 进入代码块 */    int j = 10; /* j从这里到 } 都能访问 */    System.out.println(i); /* 可以访问到i,因为i在上一级代码块 */    System.out.println(j);}System.out.println(i); /* 可以访问到i,处于同一个代码块 *//* 访问不到j */

这说明什么,说明子代码块可以访问上层代码块的变量。

上层代码块却不能访问子代码块的变量。

这是为什么,因为程序运行到}符号时,表示离开作用域,

{}内分配的变量将被JVM回收

讲到下一节“程序运行基石,栈”时,大家会有更好的理解。

全局变量

类的全局变量在类内都能访问到

public class SixthScopeLesson2 {    /**     * 定义全局静态变量     * 变量名叫val     * 把10赋值给val     */    public static int val = 10;        public static void foo() {        /**         * 由于val是全局变量         * 所以foo函数能访问到         */        System.out.println(val);    }        public static void main(String[] args) {        /**         * 由于val是全局变量         * 所以main函数能访问到         */        System.out.println(val);    }}

转载地址:http://cqkwa.baihongyu.com/

你可能感兴趣的文章
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
Mysql利用binlog恢复数据
查看>>
我的友情链接
查看>>
用yum安装mariadb
查看>>
一点IT"边缘化"的人的思考
查看>>
WPF 降低.net framework到4.0
查看>>
搭建一个通用的脚手架
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>