static

static


非静态的可以访问静态的; 静态的不能访问非静态的。
静态的和类相关; 非静态和对象相关。
static是不允许用来修饰局部变量

  • 首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有构造代码块,如果有就执行父类的构造代码块,父类的构造代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有构造代码块,如果有就执行子类的构造代码块。子类的构造代码块执行完毕再去执行子类的构造方法
    访问静态成员的方法:
  • 类名.静态成员;
  • 对象名.静态成员;
用来修饰属性:(慎用)
  • 称呼的改变
    如果使用static关键字修饰了属性,对于这个属性称之为类变量,也叫作静态变量。
    如果没有使用static关键字修饰的属性,对于这种属性称之为实例变量,也叫作非静态变量。
  • 对属性本身的改变:
    静态变量的数据是共有的(所有的对象所共有的)
    非静态变量的数据是私有的(每个对象都有自己的数据)
  • 使用方式:
    静态变量–>类名.静态变量名(静态的使用方式)
    非静态变量—>先创建对象,通过对象调用
用来修饰方法:(使用方式)
  • 称呼的改变:
    如果使用static关键字修饰了方法,对于这个方法称之为类方法,也叫作静态方法。
    如果没有使用static关键字修饰的方法,对于这种属性称之为实例方法,也叫作非静态方法。
  • 使用方式的改变,两种情况:
    1. 在类的外部使用:
      类名.静态方法名
    2. 在类的内部使用:
      • 在静态方法中调用其他的:

        • 调用静态的方法和静态变量可以直接调用(前面省略了类名)
        • 调用非静态的方法和非静态的属性不能直接调用,必须先常见对象,通过对象去调用。
          在静态方法中是没有默认的this关键字的,不存在对象。
      • 在非静态方法中调用其他的:
        可以直接调用静态属性和方法还有非静态属性和方法。

用来修饰代码块

代码块的语法 :{}
创建对象时会有jvm自动执行,一般情况下会通过构造函数来替换代码块。是jvm自动调用的,不能手动执行。

  • 代码块由static来修饰,称之为静态代码块.
    语法:static{}
    • 执行时间:在第一次预加载这个类时,会自动调用静态代码块.
    • 执行次数:永远只会执行一次。

java代码执行顺序(创建对象之前):当main要去准备执行某个类时,jvm会预加载.class文件,解析.class文件分配内存空间,进行初始化操作,为每一个类创建Class类。

关于带static代码执行顺序:
  1. 加载类
    1. 先将所有的静态属性做默认初始化。
    2. 根据设置的值做显式的初始化。
    3. 调用静态代码块。

注意:系统调用StaticTest的main方法时必须先加载StaticTest类,而不是在main方法中StaticTest d才加载StaticTest类。
2. 创建对象时

  1. 对所有的实例属性做默认的初始化。
  2. 根据设置的值做显式的初始化。
  3. 调用构造代码块。
  4. 调用构造方法(如果有父类,先调用super())

3 系统在堆内存中给对象分配空间,确定对象的首地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值