变量
-
成员变量:定义在类中方法外的变量
-
局部变量:定义在方法中的变量,以及形参。
-
静态变量:定义在类中访问外的变量,被static修饰
区别
-
成员变量:
- 成员变量属于对象,伴随着对象的创建而创建,随着对象的消失而消失。
- 成员变量在堆内存中存储。
- 成员变量有默认值
-
局部变量:
- 局部变量属于方法,伴随着方法的调用而产生,随其调用完毕而消失。
- 局部变量在栈内存中存储。
- 局部变量没有默认值,使用前需要赋值。
-
静态变量:
- 伴随这类的加载而加载,随其消失而消失。且静态变量优先于对象,仅执行一次。
- 静态变量在JDK1.8之前存储在方法区,之后再堆内存中保存。
- 可以直接使用类名直接的命名,相同的也可以使用对象名来调用。
关键字
- super:一般在子类方法中使用,代表父类的空间标识,简单来讲就是父类的引用。在子类方法中使用的时候,就可以访问到父类的数据(成员方法和成员变量)
- this:代表本类的引用,或者是本类的一个对象。“谁”调用这个方法,方法中的this就代表“谁”。this代表的是方法的调用者。 this是非静态方法中隐含的一个对象
- private:私有的;权限修饰符,可以修饰成员变量,成员方法。修饰之后,只能在本类中访问。
- public:公共的;权限修饰符,额可以修饰成员变量,成员方法,还有类。在同一个 .java文件里可以并列定义多个类,但是要求public这个修饰符,只能加给其中一个类,而且还是那个入口类
- static:静态的;可以修饰成员变量,成员方法。static修饰成员变量时,该成员变量就变成共享变量,可以被该类的多个对象共同使用。
代码块
代码块:就是在一对{}内所包含的代码
-
局部代码块:定义在(方法中)的代码块。在方法中出现,限定变量生命周期,及早释放,提高内存利用率。
-
构造代码块:(),构造代码块优先于构造方法执行,并且每创建一次就会执行一次。给类的所有成员变量进行赋值。
-
静态代码块:被static修饰的代码块。跟随类”同生共死“,且仅且优先执行一次。(一般用来做提前的准备工作)在其内部只能访问静态变量。