this是一个引用变量,其中保存了指向自身的地址,this在堆内存中的类内部
this位置示意图:
没有static关键字的方法称为实例变量,同样没有static的变量称为实例变量。当一个动作需要对象参与,就不要定义为static。this可以出现在实例方法中,表示正在执行这个方法的对象。
有static就要用类名.方法名调用,这种方法执行时候不需要对象,而且访问不了实例对象,因为没有引用。但是可以在static的方法中new一个对象,然后使用这个对象。因为主函数一般前面都有static,所以主函数里面不能直接用实例变量和this。
在构造方法中使用this(参数列表)方法可以调用另一个构造方法,而不创建对象 。但是this()只能出现在第一行,只能在构造方法出现一次。如下所示:
public Student(int age,String sex) {
this.age = age;this.sex=sex;
}
public Student(int age, String sex, int grade){
this(age,sex);//自己调用上一个构造方法
this.grade=grade;
}
空指针异常:
以一个为null的引用调用实例对象和方法会产生空指针异常,但是如果是引用.static方法不会有异常