Java 变量
Java变量包括成员变量和局部变量;
成员变量又包括类变量和实例变量,也称为全局变量;
类变量:定义在方法之外的变量,用static修饰。
实例变量:定义在方法之外的变量,无static修饰。
局部变量:定义在类方法中的变量。
public class Demo{
//类变量 static
static int salary;
//实例变量
String name;
int age;
//main方法
public static void main(String[] args){
//局部变量:必须声明和初始化值
int i = 1;
System.out.println(i);
}
}
区别
局部变量 | 实例变量 | 类变量 | |
---|---|---|---|
创建、销毁时间 | 在方法被执行时创建、在方法执行完时销毁 | 在对象创建时创建、在对象销毁时销毁 | 在程序开始时创建,在程序结束时销毁 |
能否使用访问修饰符修饰变量 | 不能 | 能,一般设为私有 | 能,一般声明为public/private,final和static类型的常量 |
内存分配位置 | 栈内存 | 堆内存 | 堆内存 |
默认值 | 无,必须初始化 | 数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null | 数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。 |
其它 | 类变量名称一般建议使用大写字母,常量初始化后不可改变。 |
权限访问修饰符
default : 默认的,不使用任何修饰符时,在当前类和同一包内可访问;
private: 私有的,只有在当前类可访问;
public:共有的,所有类都可以访问。
protected:受保护的,在当前类、同一包下、子孙类内可访问。
作用域 | 当前类 | 同一包 | 子孙类 | 其它包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | X |
default | √ | √ | X | X |
private | √ | X | X | X |