在java中,类是最基本的单位,就是定义类中的成员(成员变量和成员方法等。)
静态变量也叫类变量,是类中独立于方法之外的变量,用static 修饰。
static表示“静态的”,“全局的”,也可以用来修饰成员的方法。静态代码块。它独立于类成员,Javade jvm加载类时会执行静态代码块,每个代码块只执行一次,按顺序执行。静态变量,也是只执行一次,顺序执行。
成员变量有时,也称为,实例变量”、或“域”,无static修饰,是独立于方法之外的变量。
而局部变量是指方法中的变量。
当然,也会出现代码块,{ }修饰的。见下面的代码:
public class TestDemo {
// 静态块
static {
}
//构造块,每次都运行
{
}
static int num; // 静态变量
static String str = "java";// 静态变量
public String name = "csdn";// 全局变量
public void Method() {
int count = 2; // 局部变量
}
//static修饰的方法
private static void printData() {
}
public static void main(String[] args) {
printData();
}
}
这里,成员变量与局部变量的区别:
成员变量:
- 成员变量有默认初始化值。byte,int,short,lon默认值都是0,char是空格’\u0000’,boolean是false,String是null,float与double都是0.0.
- 成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
局部变量:
局部变量没有默认初始化值 ,必须先声明赋值后才可以使用。
- 定义在局部范围内,如:方法内等,作用域只在所属的区域有效。
- 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
在使用变量时需要遵循的原则为:就近原则,先在局部范围找,有就使用;接着在成员位置找。
常量,是由final修饰的。
常量修饰的值是不可以改变的,若常量修饰引用变量的时候,变量的值是固定不变的,而变量所指的对象的属性值是可以改变的。
如下面代码:s=new Student(); 就会报错。
public class Student {
public String name;
}
public static void main(String[] args) {
final Student s=new Student();
s.name="java";
s=new Student();
}
关于final, finally, finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。注意:finalize不一定被jvm调用,只有当垃圾回收器要清除垃圾时才被调用。