一、常量
1.常量命名
- 变量名必须是合法的标识符
- 约定俗成:常量名一般使用全大写,如果是多个单词,用下划线连接
2.常量定义
-
常量用final关键字修饰,只能被赋值一次,不能修改
//常量也分全局常量和局部常量,存放在方法区
public final int NUM=10;
3.地址访问规则
- 普通常量不能被静态方法访问
- 静态方法只能访问静态常量
- 非静态方法既能访问非静态常量,又能访问静态常量
4.全局常量和局部常量
- 全局常量没有默认值,且常量只有一次赋值机会,所以必须初始化
- 局部常量可以不初始化,在使用前必须赋值
二、变量
1.变量命名
- 变量名**必须是合法的标识符
- 合法的标识符由字母数字或下滑线组成,以字母或下划线开头,(大小写敏感)
2.变量初始化
- 变量初始化(第一次赋值)的实质:
- 使变量拥有自己的内存空间,即只是声明变量并不会开辟内存空间
3. 局部变量和全局变量
变量分为局部变量和全局变量
- 在方法中或者块作用域({}中的变量)定义的变量叫局部变量
//块作用域(可以用于类里任何地方)【例如:if语句等】
{
int a=10;
}
- 不在任何方法中定义的变量叫全局变量
//全局变量两种表现形式:对象属性,类属性
//对象可以访问对象属性和类属性,类只能访问类属性
int a=10; //对象属性(需要多份,【独立空间】)
static int b=10; //类属性 (只有一份就足够了,大家公共使用,新的值会覆盖旧的值【共享空
间】)
- 在相同作用域下不能重名,即不能声明相同的变量
- 全局变量有默认值,所以可以不用初始化 整形默认为0,字符串默认为空,浮点型默认为0.0,布尔型默认为false,引用类型为null
- 局部变量没有默认值,使用前必须先初始化,即先赋值
- 局部变量是在栈区开辟空间的,全局变量是在堆区(对象属性)或静态常量池(【方法区】类属性) 中开辟空间的
栈区内容在方法执行结束之后自动清除,堆区清除要根据gc清除机制(长时间不用清除)
Person p1=new Person();
p1=null;
//等待gc回收机制释放空间