this和static关键字

拈花ヽ惹草 提交于 2020-02-08 04:23:24

this关键字

this的本质:“创建好的对象的地址! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表**当前对象** 。

this的常用方法:

1. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。

2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。

3. this不能用于static方法中。static是静态方法,存放在方法区。this是当前类的对象,存放在堆中。当静态方法执行时,this还不存在,所以不可能使用this。
  
  例:this()调用重载构造方法

public class TestThis2 {
    int a,b,c;

    TestThis2() {
        System.out.println("正要初始化一个Hello对象");
    }
    TestThis2(int a,int b) {
        this();//调用无参的构造方法,并且必须位于第一行
        a = a;//这里都是指的局部变量而不是成员变量
        //这样就区分了成员变量和局部变量,这种情况占了this使用情况大多数
        this.a = a;
        this.b = b;
    }
    TestThis2(int a,int b,int c) {
        this(a, b);//调用带参的构造方法,并且必须位于第一行
        this.c = c;
    }

    void sing() {
    }
    void eat() {
        this.sing();//调用本类中的sing(); 可以不用
        System.out.println("这波啊,这波是肉蛋葱鸡!");
    }
    public static void main(String[] args){
        TestThis2 w=new TestThis2(2,3);
        w.eat();


    }

}

运行结果截图:在这里插入图片描述


static关键字

在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:

1. 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。

2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!

3. 一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)

4. 在static方法中不可直接访问非static的成员。
  
要点: static修饰的成员变量和方法,从属于类,普通变量和方法是从属于对象的

例:static关键字的使用

public class TestStatic {
    int id;
    String name;
    String pwd;

    static String company="百度";

    public TestStatic(int id,String name) {
        this.id = id;
        this.name = name;
    }
    public void login() {
        printCompany();
        System.out.println(company);
        System.out.println("登录:" + name);
    }
    public static void printCompany() {
        //login();//调用非静态成员,编译就会报错
        System.out.println(company);
    }

    public static void main(String[] args) {
        TestStatic z=new TestStatic(111,"李四");
        TestStatic.printCompany();
        TestStatic.company="腾讯";
        TestStatic.printCompany();
    }

    }

运行结果:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!