Java进阶—static关键字

一、修饰成员变量

        1、static修饰的成员变量叫类变量(静态变量)
        2、非static修饰的成员变量叫实例变量(非静态变量)
public class Demo{
    public static int age;    //静态变量(类变量)
    public String name;       //非静态变量(实例变量)
}
        区别:类变量可以通过类名 . 类变量名称访问,如果在类内部则可直接使用名称访问。当然,如果你new了一个该类的对象,也可以通过对象 . 类变量名称访问(但是不推荐这种方式,失去了static修饰的意义)。而实例变量则只能先new一个对象,然后通过对象 . 实例变量名称访问。
//类变量访问方式一:
Demo.age;

//类变量访问方式二:
Demo demo = new Demo();
demo.age;

//实例变量访问方式:
Demo demo = new Demo();
demo.name

二、修饰成员方法

        1、static修饰的成员方法叫类方法(静态方法)
        2、非static修饰的成员方法叫实例方法(非静态方法)
public class Demo{
    public static void test1(){    //静态方法(类方法)

    }
    public void test2(){    //非静态方法(实例方法)

    }
}
        区别:同理类方法可以通过类名 . 类方法名称访问,如果在类内部则可直接使用方法名称访问。当然,如果你new了一个该类的对象,也可以通过对象 . 类方法名称访问(但是不推荐这种方式,失去了修饰的意义)。而实例方法则只能先new一个对象,然后通过对象 . 实例方法名称访问。
//类方法访问方式一:
Demo.test1();

//类方法访问方式二:
Demo demo = new Demo();
demo.test1();

//实例方法访问方式:
Demo demo = new Demo();
demo.test2();

三、注意事项

        1、在一个类中,类方法可以访问类变量,但不能访问实例变量(否则报错)

        2、在一个类中,实例方法既可以访问类变量,也可以访问实例变量

        3、在一个类的类方法中不能出现this关键字,而实例方法可以

四、static其他应用

        1、代码块

                静态代码块:定义在类中,类加载(类只会加载一次)时自动执行,可用于完成类的初始化,如类变量的初始化赋值。

                实例代码块:定义在类中,每次创建对象时执行,并且在构造器之前执行,和构造器一样可用于对象的初始化,如实例变量的初始化赋值(这个其实没什么用,因为实例变量是每个对象创建后独有的,而对象本就是有差异的)。

public class Demo{
    public static String NAME;
    public int age;

    //静态代码块:static{操作内容}
    static {
        NAME = "布朗熊";   //初始化类变量
    }

    //非静态代码块(实例代码块):{操作内容}
    {
        age = 10;       //初始话实例变量,可操作但无意义
    //  NAME = "可妮兔"; 错误代码
    }
}
        2、单例设计模式(不懂的朋友可以先了解一下代码,暂时不讲)
public class Demo{
    //该程序static的作用:修饰的成员变量作为类变量,使其成为类的共享资源独有一份
    private static final Demo demo = new Demo();
    private Demo() {
    }

    public static Demo getObject(){
        return demo;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值