前言
这篇主要说一下变量、常量和final。
对于成员变量和静态变量,大家只需要了解基本分类概念即可。大家之后学习了方法、对象、类以后再深入学习。
变量(variable)
变量本质(固定空间)= 停车位
变量名(通过名字操作空间) = 车位编号
数据(变化的量) = 车
本质
- 变量的本质上就是代表一个”可操作的存储空间“,空间位置是确定的,但是里面放置什么值不确定。
- 可通过变量名来访问”对应的存储空间“,从而操纵这个”存储空间“存储的值。
- Java是一种强类型语言,每个变量都必须声名其数据类型。变量的数据类型决定了变量占据存储空间的大小。比如,int a = 3; 表示a变量的空间大小为4个字节。
声明
不同数据类型的常量会在内存中分配不同的空间。
double salary; 8个字节
long earthPopulation; 8个字节
int age; 4个字节
示例
//声明变量和初始化,一行可以声明多个变量
int age = 18;
double e = 2.722334343;
int i,j; //两个变量的数据类型都是int
public class TestVariable{
public static void main (String [] args){
int age =18;
int b; //只是声明了变量b,没有初始化;
int x = 0,y = 0,z=1;
System.out.println(age);
b=0; //变量使用之前,必须初始化!
System.out.println(b);
System.out.println(z);
}
}
变量的分类和作用域
变量有三种类型:局部变量,成员变量(实例变量)和静态变量(类变量)。
核心区别:
类型 | 声明变量 | 从属于 | 生命周期(作用域) |
---|---|---|---|
局部变量 | 方法或语句块内部 | 方法/语句块 | 从声明位置开始,直到方法或语句快执行完毕,局部变量消失 |
成员变量 | 方法外部,类内部 | 对象 | 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失。 |
静态变量 | 类内部,static修饰 | 类 | 类被加载,静态变量就有效;类被卸载,静态变量消失。 |
public class TestVariable{
int a = 3; //成员变量
static int b = 4; //静态变量
public static void main (String [] args){
//局部变量
int age =18;
int b; //只是声明了变量b,没有初始化;
int x = 0,y = 0,z=1;
System.out.println(age);
b=0; //变量使用之前,必须初始化!
System.out.println(b);
System.out.println(z);
}
}
局部变量(local variable)
方法或语句块内部定义的变量。生命周期是从声明位置开始到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。
示例:局部变量的声明
public void test(){
int i;
int j = i + 5; //编译出错,变量i还未被初始化
}
public void test(){
int i;
i = 10;
int j = i + 5; //编译正确
}
成员变量(实例变量)
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。
数据类型 | 实始值 |
---|---|
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
示例:实例变量的声明
public class Test{
int i ;
}
静态变量(类变量)
使用static定义。从属于类,生命周期伴随类始终,从类加载到卸载。如果不自动初始化,与成员变量相同会自动初始化成该类型的默认初始值。
常量(Constant)
恒定的、不变的。一生只赋一次值。
在Java语言中,用final来定义一个常量,常量一旦被初始化后不能再更改。
声明格式:
final type varName = value;
示例:
public class TestConstant{
public static void main(String [] args){
final double PI = 3.14;
//PI = 3.1415; //编译错误,无法为常量再次分配值
double r = 4;
double area = PI * r * r;
double circle = 2 * PI * r;
System.out.println("area = " + area);
System.out.println("circle = " + circle);
final int MAX_SPEED = 120; //常量的命名:全用大写字母,单词之间下划线隔开
}
}
为了更好的区分和表达,一般将1、2、3、‘a’、‘b’ 、true 、false、”helloWorld“等称为字符常量,而使用final修饰的PI等称为符号常量。
总结
变量和常量命名规范
- 所有变量、方法、类名:见名知义。
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()