2.4 变量
2.4.1 变量的本质
变量(variable):在程序运行过程中,其值可以发生改变的量。
变量本质上就是代表一个“可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
Java 是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a = 3;
表示 a 变量的空间大小为 4 个字节。
变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。
2.4.2 变量的定义格式
type varName [=value][,varName[=value]...];
// []中的内容为可选项,即可有可无
数据类型 变量名 [=初始值] [,变量名 [=初始值]…];
格式一:
数据类型 变量名 = 初始化值; // 声明变量并赋值 int age = 18;
格式二
// 先声明,后赋值(使用前赋值即可) 数据类型 变量名; 变量名 = 初始化值; double money; money = 55.5;
格式三,不提倡这种“一行声明多个变量”风格,逐一声明每一个变量可以提高程序可读性。
int a = 10, b = 20; // 定义 int 类型的变量 a 和 b,中间使用逗号隔开 int c, d; // 声明int类型的变量 c 和 d,中间使用逗号隔开 c = 30; d = 40;
不同数据类型的常量会在内存中分配不同的空间,如图所示。
double salary;
long earthPopulation;
int age;

2.4.3 注意事项
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量在使用之前,必须初始化(赋值)。
定义
long
类型的变量时,需要在整数的后面加 L(大小写均可,建议大写)。因为整数默认是 int 类型,整数太大可能超出 int 范围。定义
float
类型的变量时,需要在小数的后面加 F(大小写均可,建议大写)。因为浮点数的默认类型是 double, double 的取值范围是大于 float 的,类型不兼容。在同一对花括号中,变量名不能重复。
2.4.4 变量的分类
从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量。
类型
声明位置
从属于
生命周期
局部变量
方法或语句块内部
方法/语句块
从声明位置开始,直到方法或语句块执行完毕,局部变量消失;
成员变量(实例变量)
类内部,方法外部
对象
对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失;
静态变量(类变量)
类内部,static 修饰
类
类被加载,静态变量就有效;类被卸载,静态变量消失。
成员变量和静态变量不是目前重点,不要过多纠结理解与否。当学习到面向对象时,会深入理解成员变量和静态变量
局部变量(local variable)
方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。
public void test() { int i; int j = i + 5 ; // 编译出错,变量i还未被初始化 } public void test() { int i; i = 10; int j = i + 5 ; // 编译正确 }
成员变量(实例变量 member variable)
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。
数据类型
实始值
int
0
double
0.0
char
'\u0000'
boolean
false
public class Test { int i; }
静态变量(类变量 static variable)
使用
static
定义。 从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值。
Last updated
Was this helpful?