static
static 静态;
所有static关键字修饰的都是类相关的,类级别的;
所有static修饰的,都是采用" 类名. "的方式访问;
静态变量在类加载时初始化,不需要new对象,静态变量存储在方法区。
ps:实例的都是与对象相关的,访问时用" 引用. “的方式,需要先new对象;静态的都是类相关的,访问时用” 类名. "的方式,不需要new对象,也没有空指针异常的情况。
在JVM中,局部变量存在栈,实例变量存在堆,静态变量存在方法区。
静态代码块
使用static关键字可以定义静态代码块。
什么是静态代码块
static{
java语句;
java语句;
}
什么时候执行
类加载的时候执行,且只执行一次,自上而下执行静态代码块,之后再执行main方法
作用
静态代码块不常用;
特殊的时机:类加载时机
实例语句块
在构造方法之前执行
{
java语句;
java语句;
}
this
一个对象一个this;this是一个变量,是一个引用;this保存当前对象的内存地址,指向自身;this代表的就是“当前对象”;this存储在堆内存当中对象的内部;this不能用在静态方法中
什么时候this不可以省略
大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略;
this除了可以在实例方法中使用,还可以在构造方法中使用。
class student{
int no;
String name;
public student(){}
public student(int no, String name){
this.no = no;// 这里的this就不能省略
this.name = name;
}
public void setNo(int no){
this.no = no;
}
public int getNo(){
return no;
}
}
新语法:通过当前的构造方法去调用本类的另一个构造方法,可以使用此格式:this(实际参数列表);this()调用只能是构造方法中的第一个语句,目的是代码复用
结论
只要是负责调用的方法a和被调用的方法b在同一个类中
this. 和 类名. 都可以省略