Java static静态变量、静态方法

1.static关键字作用
static关键字修饰类成员变量、成员方法、内部类可以使这些类成员的创建和使用,直接与类相关而与具体实例无关。


2.静态变量(类变量)
只在系统加载类时分配空间及初始化,创建该类实例时不再分配空间,为所有实例提供共享类的静态变量。(可进行实例间的通信或者统计跟踪是该类实例的数目)。
只依附于类,与实例对象无关,对于不是private类的静态变量,可以直接用类名调用。


3. 静态方法(类方法)

1> 通过类名访问而不是实例对象访问,so 静态方法中没有this指针,不能访问该类非静态变量、方法,只能访问自己方法体内局部变量、自己的参数和静态变量。

2> 子类不能重写父类的静态方法,但可以声明与父类静态方法相同的方法,以隐藏父类的该静态方法。子类不能把父类非静态变为静态,编译错误。

3> main()方法是静态方法。JVM不创建实例就可以运行该方法。因此,main()中访问变量、方法,就要创建实例对象。


4. 静态代码块
类变量初始化,加载该类时只执行一次,优先级最高,先于构造方法执行。
静态代码块>mian方法(静态方法)>构造代码块>构造方法

class Code{
    {
      System.out.println("Code的构造块");
    }

    static{
        System.out.println("Code的静态代码块");
        }

    public Code(){
        System.out.println("Code的构造方法");
        }
    }


public class CodeBlock03{
     {
      System.out.println("CodeBlock03的构造块");    
     }

     static{
        System.out.println("CodeBlock03的静态代码块");
        }

        public CodeBlock03(){
             System.out.println("CodeBlock03的构造方法");
            }

      public static void main(String[] args){
            System.out.println("CodeBlock03的主方法");
            new Code();
            new Code();
            new CodeBlock03();
            new CodeBlock03();
          }
    }
//  输出结果
/*
CodeBlock03的静态代码块
CodeBlock03的主方法
Code的静态代码块
Code的构造块
Code的构造方法
Code的构造块
Code的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
CodeBlock03的构造块
CodeBlock03的构造方法
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值