普通局部变量与static局部变量的区别

内存分配和释放

1、普通局部变量只有执行到变量定义的语句的时候才分配空间。

2、static局部变量在编译阶段(函数还没有执行),变量的空间已经分配。

3、普通局部变量离开作用域{},自动释放其空间,也就无法使用此变量。

4、static局部变量只有在整个程序结束的时候才将其自动释放。

初始化

1、普通局部变量不初始化,为随机值。

2、static局部变量不初始化,为0。

3、static局部变量初始化语句只有第一次执行时有效,但是可以赋值多次。

4、static局部变量只能用它常量初始化。

成员变量和局部变量的区别
(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上
(2)在内存中的位置不同
成员变量:在堆中
局部变量:在栈中
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用

5.static是Java中的关键字

表示静态的、共享的意思。在Java中,static可以用来修饰类、方法和变量。

static修饰一个变量时,该变量被称为静态变量或类变量,可以被类的所有实例共享。在内存中,静态变量被存储在静态存储区中,只会被初始化一次。由于静态变量的共享性,它们可以用来表示所有对象共有的属性,比如类的常量。

static修饰一个方法时,该方法被称为静态方法或类方法,可以直接通过类名调用,不需要实例化类对象。静态方法只能访问静态变量和静态方法,不能访问非静态的实例变量和实例方法。

static修饰一个类时,该类被称为静态内部类,可以在外部类的静态方法中直接创建静态内部类的实例,而不需要创建外部类的实例。静态内部类和普通内部类一样,可以访问外部类的静态变量和静态方法,但不能访问非静态的实例变量和实例方法。