1.static 1)static翻译为“静态”; 2)所有static关键字修饰的都是类相关的,类级别的; 3)所有static修饰的,都是采用“类名.”的方式访问; 4)static修饰的变量:静态变量; 5)static修饰的方法:静态方法。
变量的分类: 变量根据声明的位置进行划分: 在方法体当中声明的变量叫做:局部变量; 在方法体外声明的变量叫做:成员变量; 成员变量又可以分为: 实例变量; 静态变量;
2.静态变量 静态变量在类加载时初始化,不需要new对象。静态变量存储在方法区中(注意不是堆中)。
* 静态变量:类级别,存放在方法区中; * 实例变量:对象级别,存放在堆中; * 局部变量:存放在栈中。
静态变量/方法可以使用“类名.”的方式访问,也可以使用“引用.”的方式访问,但是静态变量/方法不建议使用“引用.”的方式访问。实例变量/方法只能使用“引用.”的方式访问。
在空引用访问实例相关的时候,会出现空指针异常。空引用访问静态相关时,不会发生异常。
3.静态代码块 使用static关键字可以定义:静态代码块。 语法:
static{ java语句; }static静态代码块在类加载时执行,并且只执行一次。注意:静态代码块在main方法执行之前执行,静态代码块一般是按照自上而下的顺序执行的。
静态代码块的作用:静态代码块这种语法机制是SUN公司给Java程序员准备的一个特殊的时机,叫做类加载时机。程序员可以在静态代码块做初始化或提示等。
4.实例代码块 实例代码块语法很简单,就是一对大括号:
{ Java语句 }实例代码块在什么时候执行?实例代码块不是在类加载时执行的,只要构造方法执行,则实例代码块必然在构造方法执行之前自动执行。 实际上,这也是SUN公司为Java程序员准备的一个特殊的时机,叫做对象构建时机。
5.this 一个对象是一个this。this是一个变量,是一个引用。this中保存当前对象的内存地址,指向自身。所以,严格意义上来说,this代表的就是“当前对象”。this存储在堆内存当中对象的内部。
注意: - this只能使用在实例方法中。 谁调用这个实例方法,this就是谁。所以this代表的就是当前对象。 - this不能使用在静态方法中。 - “this.”大部分情况下是可以省略的,省略时,默认还是访问“当前对象”。(方法中局部变量与实例变量同名的 情况下"this."不能省略)
6.this()的用法 this除了可以使用在实例方法中,还可以使用在构造方法中。可以在当前的构造方法中调用本类的另一个构造方法,可以使用以下语法格式:
this(实际参数列表);这种语法可以做到:代码复用。 注意: 对于this()的调用只能出现在构造方法的第一行,且一个构造方法中只能使用一次。
public class StudentTest { String name; int age; public StudentTest(){ this("zhangsan",18); } public StudentTest(String name,int age){ this.name = name; this.age = age; } }