this指向及static方法详解
语法格式:
- this第一种语法:
public People{
String age;
public setAge(String age) {
this.age=age; // this这里指的的是调用当前对象的内存地址;
}
}
this第二种用法:
public class Cat {
private int a;
private int b;
Cat() {
System.out.println("调用了无参Cat构造函数");
}
Cat(int a,int b) {
this();
this.a=a;
this.b=b;
}
}
public static void main(String[] args) {
Cat cat = new Cat(10,10); // -----------> 调用了无参Cat构造函数
}
关于java语言当中的this关键字
- this是一个关键字,翻译为:这个
- this是一个引用
- this是一个变量
- this变量中保存了内存地址指向了自身
- this存储在JVM堆内存java对象内部。(详见内存图)
关于this详解:
- 创建100个java对象,每一个对象都有this,也就说有100个不同的this
- this可以出现在实例方法当中,this指向当前正在执行这个动作的对象。(this代表当前对象)
- this在多数情况下都是可以省略不写的
- this不能使用在带有static的方法当中
关于this()详解:
- 只能在构造方法中使用this调用其他构造方法,不能在成员方法中使用
- 在构造方法中,使用this调用构造方法的语句必须位居第一行,且只能出现一次,否则会编译错误
- 不能在两个构造方法中相互调用,否则会编译错误
static方法详解
带static与不带static方法的区别:
带static调用区别:类名.方式调用
不带static调用区别:引用.方式调用
总结:不带static是一个实例方法,带static是一个静态方法
什么时候使用static什么时候不用?
- 顾客购物的行为,每一个顾客购物最终的购买的东西和结账的总金额的结果是不一样的 所以购物这个行为是属于对象级别的行为 由于每一个对象在执行购物这个动作的时候最终结果不同,所以购物这个动作必须有”对象”的参与。
总结:
判断是否用static来创建方法的依据:当一个行为/动作执行的过程当中是需要对象参与的,那么这个方法一定要定义为实例方法”,不要带static关键字
不带static是专门为对象级别行为使用的
带static是一个普通方法使用
带static的方法都需要创建对象才能调用实例方法和成员方法
再次重申:
带static的类名.方法名();
不带static的引用.方法名();