博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
成员变量与局部变量
阅读量:6097 次
发布时间:2019-06-20

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

成员变量与局部变量

成员变量:在类体中定义的变量为成员变量,作用范围(scope)是整个类,只要在这个类中都可以访问到它。

局部变量:在一个方法或方法中的代码块(code block)中定义的变量。局部变量是在方法或代码块被执行的时候被创建,在方法或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值,否则出现编译错误。

如下程序综合了变量的应用:

package com.liaojianya.chapter1;/** * This program demonstrates the difference between local variables and member variables * @author LIAO JIANYA * */public class TestLocalVar4_5{	public static void main(String[] args)	{		int outer = 1;		{			int inner = 2;			System.out.println("inner = " + inner);			System.out.println("outer = " + outer);		}//		System.out.println("inner = " + inner);		int inner = 3;		System.out.println("inner = " + inner);		System.out.println("outer = " + outer);				System.out.println("In class, the member a = " + a);	}		static int a = 123;}

 运行结果:

inner = 2outer = 1inner = 3outer = 1In class, the member a = 123

总结:块(block)作用范围除了用for(while)循环或方法体的左右花括号{}来界定外,还可以直接用花括号{}来定义块。

1)在上述程序中,块内定义inner为2,所以第一次打印出来的inner = 2.出了块后,若取消注释符号//,会出现编译错误,原因是这个语句不认识名叫“inner”的变量,因为前一个inner是定义在块内,出了块,块内inner将对后面的语句无效。之后,又重新定义一个inner变量并赋值为3,所以之后打印出来为inner = 3。

2)从程序结果可以看出,outer = 1一直适用,因为是定义在块外的变量并且已经被赋值为1,块内快外都是可以调用.

3)对于主方法块外的static int a = 123;是属于成员变量,必须声明为static的,否则main方法无法识别,因为是静态方法只能访问静态域,无法访问非静态域,虽然是在最后声明的,但是能够被访问,因为它的作用域是整个类。

规则:一般而言,所有变量都遵循“先声明,后使用”的原则,只有先声明了,变量才能在内存中存在,之后才能被其他方法去访问。但是,存在于类中成员变量(不在任何的方法中),其作用域是整个类的范围,在编译器的内部协调下,变量只要作为类中的数据成员被声明,就可以在类内部的任何地方使用,无需满足“先声明,后使用”的原则。

转载于:https://www.cnblogs.com/Andya/p/5669813.html

你可能感兴趣的文章
java 工程师面试题
查看>>
数据库oracle 11g 的启停操作
查看>>
数组的一些操作方法,如join(),split(),slice()等
查看>>
python3_redis随手学习笔记
查看>>
Django1.8 关于 静态文件配置
查看>>
linux异步信号handle浅析
查看>>
-bash:wget command not found的解决方法
查看>>
Android OnKeyDown 监控/拦截/监听/屏蔽返回键,菜单键和Home键
查看>>
正则表达式及文本查找工具grep
查看>>
caddy 配置案例
查看>>
我的lvs方案实现
查看>>
fstab每一列的含义
查看>>
管理附加文件的访问控制
查看>>
S2S3H4框架深度集成搭建(2) Spring的深度集成
查看>>
Python 删除特定时间段的文件
查看>>
MySql授权
查看>>
MySQL创建用户并授权及撤销用户权限
查看>>
Linux下定时切割nginx日志并删除指定天数前的日志记录
查看>>
MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结
查看>>
世界IT名人录
查看>>