Java的static关键字

基本概念
通常情况下成员变量都隶属于对象层级,每个对象都拥有独立的内存空间来记录自己独有的成员变量,当所有对象的成员变量值都完全一样时,若每个对象单独记录则会造成内存空间的浪费,此时应该将该成员变量有对象层级提升到类层级,在内存空间中只保留一份而且被所有对象共享,为了实现该效果则使用static关键字修饰,表示静态的含义。

static关键字可以修饰成员变量和成员方法表示隶属于类层级,推荐使用类名. 的方式

使用方式
(1)对于非静态的成员方法来说,既可以访问非静态的成员也可以访问静态的成员。
(成员:成员变量+成员方法)
(2)对于静态的成员方法来说,只能访问静态的成员不能访问非静态的成员。
(执行静态方法可能还没有创建对象,非静态成员隶属于对象层级)
(3)只有被所有对象共享的内容才能加static,static不能滥用。

区分有static修饰和没有static修饰的区别

public class TestStatic{

    private int cnt = 1; //隶属于对象层级,每个对象都拥有独立的一份
    private static int snt = 2; //隶属于类层级,所有对象共享同一份

    public void show(){  //隶属于对象层级,使用对象.的方式访问
        System.out.println("cnt = " + this.cnt); //ok  1
        System.out.println("snt = " + this.snt); //ok  2
    }  

    public static void test(){ //隶属于类层级,使用类名.的方式访问
        //System.out.println("cnt = " + cnt); //error 
        System.out.println("snt = " + snt); //ok  2
    }

    public static void main(String[] args){

         TestStatic ts = new TestStatic();
         ts.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值