首页 理论教育 Java变量的作用域详解

Java变量的作用域详解

时间:2023-11-01 理论教育 版权反馈
【摘要】:变量在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。在Java中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。图2-38变量的作用域说明Java将变量的作用域分为四个级别:类级、对象实例级、方法级和块级。理解变量的四种不同作用域,作用域决定了变量的“可见性”以及“存在时间”。

Java变量的作用域详解

变量在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。对于在作用域里定义的变量,作用域同时决定了它的“可见性”以及“存在时间”。

在Java中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。在作用域里定义的变量,程序在离开该作用域之前可以使用,一旦超出该作用域,将无法访问。下面通过一个代码片段来展示变量的作用域,如图2-38所示。

图2-38 变量的作用域说明

Java将变量的作用域分为四个级别:类级、对象实例级、方法级和块级。

(1)类级变量又称全局级变量或静态变量,需要使用static关键字修饰。类级变量在类定义后就已经存在,占用方法区内存空间,可以通过类名来访问,不需要实例化。

(2)对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。

(3)方法级变量就是在方法内部定义的变量,即局部变量。局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量的作用域从它被声明的点开始,一旦出了自己的作用域就马上从内存释放。

(4)块级变量就是定义在一个块内部的变量,块是指由大括号包围的代码。块级变量的生存周期就是这个块,出了这个块就消失了,例如if语句块、for语句块等中定义的变量。

【例2-21】

设计一个程序,说明局部变量和块级变量作用域。

程序ScopeDemo.java如图2-39所示。

图2-39 变量的作用域

注意:

(1)同一个作用域范围内的变量不能重名,但是不同作用域范围的变量可以重名。

(2)程序第7行代码,打印的是for循环块里的局部变量x,而不是main()方法里的局部变量x,可见,访问同名变量时,符合就近原则。

项目总结

本项目是Java语言的基础,要求如下:

(1)理解三种Java注释的作用,并在开发中熟练使用。

(2)掌握标识符的命名规则,并在开发中严格遵循。

(3)掌握Java数据类型的分类,理解数据类型转换。

(4)重点掌握一维数组的声明和初始化过程,并能画图说明。

(5)理解JVM的内存区域划分,有助于后续学习

(6)掌握字符编码,字符编码运用不当会导致乱码,在后续讲解String类和IO流时还会涉及。(www.xing528.com)

(7)理解变量的四种不同作用域,作用域决定了变量的“可见性”以及“存在时间”。

(8)熟练掌握Java支持的运算符。至于未讲解的位运算符,可以查阅相关资料。

(9)顺序结构语句、选择结构语句和循环结构语句是结构化程序设计的三种基本流程控制语句。熟练掌握选择结构语句和循环结构语句的使用,掌握break和continue关键字的应用场景。

(10)方法的出现体现了代码的可重用性。掌握方法的定义和调用过程,掌握方法重载的内涵,掌握方法的递归调用。

项目作业

1.下面符合Java标识符命名规范的是( )和( )。

A.class B.2name C.$para1 D.-name

2.int x=2;int y=5;y=++x;这执行后,x和y 的值分别为_________和_________。

int x=2;int y=5;y=x++;这执行后,x和y 的值分别为_________和_________。

3.在Java中,byte 类型数据占_________字节,int类型数据占_________字节,long类型数据占_________字节,char类型数据占_________字节,float类型数据占_________字节,double 类型数据占_________字节。

4.下面赋值语句中正确的是( )和( )。

A.float a=0.25;B.char b=2+中;C.String c=abc;D.int d=a;

5.以下定义数组语句正确的是( )。

A.int[2]a=new int[];B.int[]b=new int[];

C.int[][]c=new int[2][];D.int[][]d=new int[][2];

6.简述数组的三种初始化方式。

7.以语句“int[]arr=new int[]{1,2,3};”为例,画出一维数组内存分配及初始化过程。

8.简述Java数据类型分类。

9.简述字符编码Unicode和UTF-8。

10.简述变量的四种作用域。

11.给定一个int型数组{2,8,41,25,10,3},请用冒泡排序法将其按升序排列并输出。

12.引入方法重载的目的是什么?方法重载的判断依据是什么?System.out.println方法使用了重载吗,为什么?

13.斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,…,这个数列从第三项开始,每一项都等于前两项之和。在数学上,斐波那契数列被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)。请编写递归算法,并计算F(10)等于多少。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈