变量(variable)
简单来说就是 "可以操作的存储空间"!
在生活中,可以把变量名想象成超市里面的各种物品的编号栏,例如水果,蔬菜等。可以把数据(变化的量)具体到每个物品。
- 变量实际上来说就是一个 "可以操作的存储空间",这个存储空间的位置是确定的,但是里面到底放的什么值不确定。
- 可以通过变量名字来找到 "存储空间",然后就可以操作里面存储的值。
- java语言是一种强类型语言,每个变量都必须声明其数据类型。
- 变量的数据类型决定变量所占据的存储空间大小。
变量的声明
int age; // 整数类型的年龄
long population; // 长整型的人口
double salary; // 双精度类型的薪水
对于不同的数据类型的常量在内存中分配的空间也是不同的,如下图1.1所示:
代码示例
/**
* 声明变量和初始化(赋予初值)
*/
// 单独声明与初始化
int age = 18;
double salary = 7545.21
// 同时声明
int a,b; // 这两个变量的数据类型都是int类型
变量的分类和作用域
变量有三种类型:局部变量、成员变量(或实例变量)和静态变量(或类变量)。
类型 | 声明位置 | 从属于 | 声明周期(作用域) |
局部变量 | 方法或语句块内 | 方法/语句块 | 声明开始,直到方法/语句块执行结束,局部变量也随之消失 |
成员变量 | 类内部,方法外部 | 对象 | 对象创建时,成员变量也随之创建。对象消失时,成员变量也随之消失 |
静态变量 | 类内部,static修饰 | 类 | 类被加载时,静态变量随之生效。类被卸载时,静态变量随之消失 |
- 局部变量(local variable)
方法或语句块内定义的变量。生命周期从声明位置开始到方法/语句块执行完毕结束。局部变量使用前必须先声明、初始化(赋初值)才可以使用。
代码示例
/**
* 测试局部变量的声明与初始化
*/
public void testLocalVar1(){
int a;
int b = a + 1; // 编译报错,变量a还未被初始化
}
public void testLocalVar2(){
int a;
a = 1; // 可以直接一步到位(声明 + 初始化):int a = 10;
int b = a + 2; // 编译通过
}
- 成员变量(或实例变量 member variable)
类的内部、方法外部定义的变量。从属于对象,生命周期跟随对象。注意:如果成员变量不进行初始化(赋初值),它会自动初始化成该类型的默认初始值。
数据类型 | 初始值 |
int | 0 |
double | 0.0 |
char | '\u0000' |
boolean | false |
代码示例
/**
* 成员变量的声明与初始化
*/
public class TestMemberVar{
// 类的内部或方法外部
int a = 10; // 声明与初始化
public void printSalary(){
// 从属于方法的变量是什么变量?
// 答案是:局部变量
double salary = 12000.0
System.out.println(salary);
}
}
- 静态变量(或类变量 static variable)
使用 "static"关键字定义的变量。从属于类,生命周期从类加载开始到类被卸载结束。注意:如果静态变量不进行初始化,它与成员变量是一样的,会自动初始化成该类型的默认初始值,见上表2.1所示。后期会出方法、对象以及类的,我会再进行讲解的,结束!