zoukankan      html  css  js  c++  java
  • Java学习笔记之static

    1.static可以用于修饰成员变量、方法以及块,并不会改变类中成员的权限修饰,如:private修饰的成员变量,类外只能类名或非私有方法调用,而不能使用对象名调用。

    2.static方法和成员变量,可使用类名直接调用,而不需要实例化:类名.方法名();类名.变量名();

      也可以实例化后,使用对象名调用。

    3.static方法(静态方法):

      3.1 静态方法中,没有this,因为没有创建对象;

      3.2 静态方法中不能调用非静态成员变量、方法,但非静态方法可以调用静态成员变量、方法;

    4.static变量(静态变量):

      4.1 静态变量在类第一次加载时,就会初始化并赋值;

      4.2 每一个静态变量在内存中都是只有一个副本,所有对象共享这个副本,无论哪个对象或是类名调用修改,都会使之变化;

      4.3 static不能用于修饰局部变量,这是Java语法规定的。

    5.static块:

      5.1 静态块可以在类的任何位置定义,会在类第一次加载时,依次调用,并且只调用一次,即还没创建对象便已调用:

        

    public class Test extends Base{
     
        static{
            System.out.println("test static");
        }
         
        public Test(){
            System.out.println("test constructor");
        }
         
        public static void main(String[] args) {
            new Test();
        }
    }
     
    class Base{
         
        static{
            System.out.println("base static");
        }
         
        public Base(){
            System.out.println("base constructor");
        }
    }
    base static
    test static
    base constructor
    test constructor
    View Code

    执行过程:先要寻找到main方法,因为main方法是程序的入口,但是在执行main方法之前,必须先加载Test类,而在加载Test类的时候发现Test类继承自Base类,因此会转去先加载Base类,在加载Base类的时候,发现有static块,便执行了static块。在Base类加载完成之后,便继续加载Test类,然后发现Test类中也有static块,便执行static块。在加载完所需的类之后,便开始执行main方法。在main方法中执行new Test()的时候会先调用父类的构造器,然后再调用自身的构造器。因此,便出现了上面的输出结果。

  • 相关阅读:
    js原型对象与Java类的比较
    javascript特效--制作背景电子钟(整点时祝贺生日快乐)
    Java web MVC开发模式入门感悟
    重新审视面向对象编程
    10-排序4 统计工龄(20 分)
    基数排序
    表排序
    快速排序
    09-排序3 Insertion or Heap Sort(25 分)
    09-排序2 Insert or Merge(25 分)
  • 原文地址:https://www.cnblogs.com/qingyibusi/p/5769377.html
Copyright © 2011-2022 走看看