上一篇,我讲了标识符&关键字 这篇我来解释下变量&常量~~~
变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量。理解变量与常量,可以举这样一个例子:
例如,银行中活期存款的利率按5%计算,那么这个数字5%就是常量,而从银行中获得的利息会在不断地变化,此时利息就是变量。
Java程序中的变量、常量与数学中的变量、常量意义是相同的,本节向大家介绍Java中的变量与常量。
常量的概念及使用
Step1.
Step2.
在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定,声明语法如下:
final type 标识符
也可以在声明的同时为常量赋值:
final
type 标识符=值
其中关键字final用来指定标识符为一个常量,type表示数据类型,如int、float等。
例如,圆周率的值在程序执行过程中是不会改变的,所以可以将一个标识符定义为一个常量来保存圆周率值,声明方法如下:
final
float PI=3.1415926F //通过关键字final将PI声明为一个常量,float指定了PI常量的数据类型。
注意:
按照Java编码规范,常量名通常用大写表示,并且要符合“见其名知其意”的规则。 通过final关键字声明的常量,不能再改变其值,否则编译出错。
下面我们来做一个实例:
要求:声明final常量,程序代码如下
public class Noname1 {
public static void main(String[] args) {
final int NUM = 100;
NUM = 20;
}
}
编译这段程序,会出现编译错误,如下图
修改final常量出现的编译问题
声明变量,程序代码如下:
public class Test {
public static void main(String[] args) {
int age; // 声明int型变量
char char1 = 'a'; // 声明char型变量并赋值
}
}
编写以上程序代码,会产生什么样的作用呢?要了解这个问题,就需要对变量的内存配置有一定的认识。笔者用图解的方式,将上例程序代码在内存中的状况表现出来。
由上图得出、、、系统的内存可大略分为3个区域,即系统区(OS)、程序区(Program)、数据区(Data)。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。假设上述两个变量定义在方法体中,则程序加载到程序区中。当执行此行程序代码时,会在数据区配置空间给这两个变量
说白了,
就是在内存里面划分一块区域来储存~
在同一个有效范围内,声明的变量名不允许重名,程序代码如下
public class Test {
public static void main(String[] args) {
int jhh, jhh2;
float jhh2; // 编译出错, 局部变量jhh2重复
char hh, hh; // 编译出错, 局部变量hh重复
}
}
Java语言中的标识符是区分大小写的,所以下面的变量名是合法的:
int num,Num; // 声明了两个不同的变量
变量名不能命名为Java关键字:
关键字因在Java语言中有着特殊用途而被保留起来,在声明变量时,不能用做变量名称,在第六篇已经跟大家介绍Java中的关键字
选择有意义的变量名:
根据以上规则可以命名一个合法的变量名,在此基础上,建议同学们尽量以有意义的名称来为变量命名,以便能够起到“见其名而知其意”的目的,使得程序代码更容易阅读,如“name”、“age”等。
变量的有效范围
变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域访问变量,则编译时会出现错误。变量的有效范围决定了变量的生命周期,变量的生命周期是指从声明一个变量并分配内存空间开始,到释放该变量并清除所占用的内存空间结束。进行变量声明的位置,决定了变量的有效范围,根据有效范围的不同,可以将变量分为以下两种。
成员变量:在类中声明,在整个类中有效
局部变量:在方法内或方法内的某代码块(方法内部,“{”与“}”之间的代码)中声明的变量。在代码块声明的变量,只在当前代码块中有效;在代码块外、方法内声明的变量在整个方法内都有效。
解释:
class A { int a;//成员变量 public static void main(String[] args) { int b;//局部变量 } }
创建类Olympics,分别在类体中定义成员变量medal_All,局部变量medal_CN与gold,程序代码如下。由于本实例中定义的变量medal_CN与gold是局部变量,只有在定义的区域内有效,因此编译本实例中会出现错误
代码如下
public class On_1
{
private int medal_All = 800; // 放在这样算是一个成员变量 public void China() {
int medal_CN = 100; // 方法的局部变量
if (true) { // 代码块
int gold = 50; // 代码块的局部变量
medal_CN += 50; // 允许访问
medal_All -= 150; // 允许访问
}
gold = 100; // 编译出错
medal_CN += 100; // 允许访问
medal_All -= 200; // 允许访问
} public void Other() {
medal_All = 800; // 允许访问
medal_CN = 100; // 编译出错, 不能访问其他方法中的局部变量
gold = 10; // 编译出错
}
}
要避免在程序开发中出现这样的问题,就要很好地掌握成员变量与局部变量的定义和作用范围。
局部变量放在块 或者 方法里面 。。。只能在局部使用, 超出范围就不行了。
区别:
1.成员变量在类中,局部变量在方法中
2.声明成员变量时可以不初始化(被final修饰且没有static的必须显式赋值),而局部变量必须手动初始化
3.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可 以定义成final型
4.成员变量存储在堆,局部变量存储在栈
5.存在时间不同
JAVA_SE基础—— 7.常量&变量 到这里算是结束了 不会的,或者有问题的,或者有同学想和我交流的,可以加我QQ654249738 或者 留言——ThesCript_j