• 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使用,作为全局性常量存在。
     
     
  • 相关阅读:
    SQLServer分组加序号,只取某个对象指定条件的前几个
    SQLServer用with temptb AS临时表查询或者更新字段,将某个字段赋值成某个字段的值
    KMP算法
    java知识点
    程序接口设计的六大原则
    罗马数字转int
    使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴
    java mybatis中大于号小于号的转义
    两个有序数组 A1 A2 的合并
    Mysql_设置root指定的ip访问或连接数据库
  • 原文地址:https://www.cnblogs.com/gaoqiri/p/8049465.html
Copyright © 2020-2023  润新知