在程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。变量和常量的命名都必须使用合法的标识符。
- 标识符
标识符可以理解为一个名字,用来标识类名,方法名,变量名,数组名,文件名的有效字符序列。
Java语言中规定标识符:
1. 由任意字母,数字,下划线_, 美元符号$ 组成;
2. 数字不能开头;
3. 不能使用Java中保留的关键字;
在Java语言中,标识符中的字母是严格区分大小写的,如good与Good就是两个不同的标识符;Java语言中使用Unicode标准字符集,最多可以表示63535个字符,因此,Java语言中的字母不仅能包括通常的拉丁文字a,b,c;还能包括汉字,日文等其他语言中的文字。
- 关键字
关键字是在Java中已经被赋予了一定意义的单词,不能作为标识符来使用
Java中的关键字有:
int | public | this | finally | boolean | abstract |
continue | float | long | short | throw | throws |
return | break | for | new | static | interface |
if | goto | default | byte | do | case |
strictfp | package | super | void | try | switch |
else | catch | implements | private | final | class |
extends | volatile | while | synchronized | instanceof | char |
protected | Import | transient | dafault | double |
|
- 变量
变量的使用在程序设计中是一个非常重要的环节。定义变量就是要告诉编译器,该变量的数据类型,这样编译器才知道给他分配多少内存空间,知道他存储什么类型的值。在程序运行过程中,空间内的值是会发生变化的,这个内存空间就被称为变量。为了方便操作,给这个内存空间取个名字,就成为变量名,而空间内的值则成为变量值。变量名的必须是合法的标识符。在声明变量时,可以直接赋值,也可以不赋值。
例如:
int age ; // 声明int型变量;
Char char1 = ‘j’; // 声明char型的变量并赋值;
由上图可知,系统内存可大概分为三个区域,即系统(OS)区,程序(Progrom)区和数据(Data)区。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。假设变量定义在方法体中,则程序加载到程序区中。当执行此行代码时,会在数据区配置空间给出这两个变量。
对于变量的命名并不是任意的,应该遵循以下几条规则:
- 变量名必须是一个有效的标识符;
- 变量名不可以使用Java中的关键字;
- 变量名不能重复;
- 应该选择有意义的单词做变量名;
注意: 在Java语言中,允许使用汉字或其他语言文字作为变量名,如: int 年龄 = 13;在程序运行时不会出现错误,但是不提倡。
变量的有效范围
当变量被定义出来后,只是在存在内存中,等到程序执行到某一个点,该变量就会被释放,所以说变量是有生命周期的。 因此变量的有校范围是指程序能够访问该变量的区域,若是超出该区域则会报错。在程序中,变量通常被分为成员变量和局部变量。
成员变量是定义在类中的,且他的作用范围也是整个类。在类中定义的成员变量还可以分为:实例变量和静态变量。
例如:
Class var{
int x = 5;
Static int y = 8;
}
上述的x就是实例变量,而y则因为他的前面加了static关键字,则称为静态变量,静态变量的作用范围是可以跨类的,也就是在别的类中,也可以用“类名.静态变量”的形式使用。
局部变量只是定义在类的方法体中,并且只在当前代码块中有效。局部变量的生命周期取决于方法,当方法被调用时,jvm虚拟机会为方法中的局部变量分配内存空间,当方法调用结束后,会释放方法中局部变量占用的内存空间,局部变量则会销毁。
成员变量与局部变量的区别:
定义位置不同:成员变量定义在类中,方法外面;局部变量定义在方法中。
有校范围不同:成员变量在整个类中都有校;局部变量只在该方法中有校。
默认值不同:成员变量的默认值是随不同数据类型,有不同的默认值;而局部变量没有默认值。
存储位置不同:成员变量存储在堆中,而局部变量存储在栈中;
生命周期不同:成员变量的生命周期比局部变量长。
注意:局部变量可以与成员变量的名字相同,但是此时成员变量将会被隐藏,即这个成员变量在此方法中暂时失效。
- 常量
在程序运行过程中一直不会改变的量称为常量,通常也被称为“final变量”。常量在整个程序中只能被赋值一次,在所有的数据共享值时,常量是非常有用。
声明常量的标准语法:
final 数据类型 常量名 = 值;
注意:当定义的final变量是成员变量时,必须在定义时就设置他的初值,否则就会报错。