java基础之关键字static

    在java当中有很多关键字,static便是其中一个,它很普通但我们经常需要运用到它,所以要了解static是非常有必要的。
 
鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢。

一.static关键字基础

     static是静态的意思,这个关键字主要有四种用法:
     1)static 修饰在类变量
      static修饰在类变量中,代表该类变量属于全局性变量,不跟随类的实例化而生成,可以直接通过类名.变量名直接访问
 
class MyStatic{
    
    public static int MY_STATIC_INT = 1;
    
    public static void main(String[] args) {
        
        System.out.println(MyStatic.MY_STATIC_INT);
        
    } 
}
​
// 1


从这段代码可以看出MY_STATIC_INT变量不依赖类的实例化就可以访问,这样的话static关键字可不可以脱离访问修饰符控制对所调用者可见呢?
 
class MyStatic{
    private static int MY_STATIC_INT = 1;//访问修饰设置成private私有
}
class TestStatic{
    public static void main(String[] args) {
        System.out.println(MyStatic.MY_STATIC_INT); //编译错误
    }
     
}


显然static是无法脱离访问修饰符控制

2)static修饰方法
    (1)当static修饰方法时无需实例化类可(类名.方法名)直接访问。
    (2)并且static修饰的方法无法使用this,super等关键字。
              因为this关键字是指向当前对象的引用,而static修饰符方法是脱离类实例化对象的引用,super关键字是指向当前对象父类实例的引用,同理无法使用
    (3)static修饰的方法无法调用非静态方法,非静态方法可以调用静态方法
              非静态方法引用依赖于类的实例化对象,如果静态方法直接调用非静态方法,程序编译期就会报错,因为非静态方法根本没有实例化。
 
class MyStatic{
    public static void isStaticMethod(){
        System.out.println("isStaticMethod");
    }  
    public void unStaticMethod(){
        MyStatic.isStaticMethod();
    }  
}
class TestStatic{
    public static void main(String[] args) {
        MyStatic myStatic = new MyStatic();
        myStatic.unStaticMethod();
    } 
}
//isStaticMethod
​



 
class MyStatic{
    public static void isStaticMethod(){
        unStaticMethod();//编译错误
    }  
    public void unStaticMethod(){
        System.out.println("isStaticMethod");
    }  
}


3)静态代码块
    (1)可以在同一类下有多个静态代码块,按顺序执行
    (2)静态代码块块在同一类中,只执行一次。
    (3)静态代码块中可调用静态方法,不能调用非静态方法
    (4)静态代码块先于构造器执行

 
public class KeyWordStatic extends IsFather{
    public static String STATIC_VALUE = "1";
    public KeyWordStatic(){
        System.out.println("is coming constructor");
    }
    static{
        System.out.println("is static block");
        System.out.println(STATIC_VALUE);
        staticMethod();
    }
    
    public static void main(String[] args) {
        KeyWordStatic keyWordStatic1 = new KeyWordStatic();
        KeyWordStatic KeyWordStatic2 = new KeyWordStatic();
    }
    
    public static void staticMethod(){
        System.out.println("staticMethod"); 
    } 
}
​
class IsFather{
    public IsFather(){
        System.out.println("it is father");
    }
}
console:
//is static block
//1
//staticMethod
//it is father
//is coming constructor
//it is father
//is coming constructor


static关键字总结

   static关键是在java当中被广泛使用,掌握和理解static基本用法和规则是使用好static关键字的前提,static关键字修饰变量常配合final使用,作为全局性常量存在。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值