zoukankan      html  css  js  c++  java
  • static关键字

    satic可以修饰变量,方法和代码块 

    静态变量:

    1.static方法可以调用本类的static变量,但不能直接调用非static变量,调用非static变量必须使用对象调用。

    1 public class testFunction {
    2     static String HOBBY = "阅读";
    3     String ordinaryVal = "睡觉";
    4 
    5     public static void updateStaticValue(){
    6         System.out.println(HOBBY);
    7         System.out.println(ordinaryVal); (报错了,不能直接调用,对象才可以调用非static变量)
    8     }
    1 public class testFunction {
    2     static String HOBBY = "阅读";
    3     String ordinaryVal = "睡觉";
    4 
    5     public static void updateStaticValue(){
    6         System.out.println(HOBBY);
    7         testFunction tf = new testFunction();
    8         System.out.println(tf.ordinaryVal); #(正确)
    9     }

    静态方法:

    1.静态方法可以被继承但是不能被重写;

    public class Second  {
        public static void eat(){
            System.out.println("Secode_eat!!!");
        }
    
        public  void drink(){
            System.out.println("Secode_drink!!!");
        }
    }

    不可以重写:

    可以继承,t.eat()的结果是Second类eat()的结果:

    静态代码块:

    1.静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

    public class testFunction {
        int num1;
        int num2;
        static int num3;
    
        public testFunction() {// 构造方法
            num1 = 11;
            System.out.println("通过构造方法为变量num1赋值");
        }
    
        { // 初始化块
            num2 = 22;
            System.out.println("通过初始化块为变量num2赋值");
        }
    
        static {// 静态初始化块
            num3 = 33;
            System.out.println("通过静态初始化块为静态变量num3赋值");
        }
        public static void main(String[] args) {
            testFunction s = new testFunction();
        
    testFunction t = new testFunction();
    } }

    结果:

    通过静态初始化块为静态变量num3赋值
    通过初始化块为变量num2赋值
    通过构造方法为变量num1赋值
    通过初始化块为变量num2赋值
    通过构造方法为变量num1赋值

    程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。类是在第一次使用的时候才加载,加载之后就不会移除

     

     

  • 相关阅读:
    python常用模块之random模块
    python常用模块之time&datetime模块
    on windows in superset sql lab error "module object has no attribute sigalrm"
    Superset安装出错 sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, ...
    Ubuntu16.04怎样安装Python3.6
    Ubuntu16.04切换python3和python2
    Python Set Literals
    odoo 分组视图下显示同一批次记录的总数
    Let's Encryt免费SSL证书申请[我司方案]
    nginx接入let's encrypt
  • 原文地址:https://www.cnblogs.com/vanoraxnc/p/12150522.html
Copyright © 2011-2022 走看看