static关键字

static的主要作用在于创建独立于具体对象的域变量或者方法。
1、静态变量
又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份。
区分实例变量,每创建一个实例就会产生一个实例变量。 类变量随着类的加载而存在于方法区中。实例变量随着对象的建立而存在于堆内存中。类变量生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。

2、静态方法
可通过“类.静态方法”调用;静态方法中只能调用静态方法或静态属性,如果想调用非静态方法或属性,需要new一个对象;静态方法中不能有this和super;

3、静态代码块
在类被初次加载时执行,且执行一次,通常将只需要进行一次的初始化操作都放在static代码块中进行。

4、静态内部类
内部类: 定义在类内部的类叫做内部类,内部类持有外部类的引用,所以能够访问外部类的所有变量和方法,内部类一般只为外部类使用,且内部类能够独立的继承接口。外部类对象通过 ‘外部类名.this.xxx’ 的形式访问内部类的属性与方法。
static修饰之后就叫做 静态内部类,或嵌套类,要创建静态内部类的对象,并不需要其外部类的对象;也没有持有外部类的引用。不能够从静态内部类的对象中访问外部类的非静态成员。

public class OuterClass{
	class InnerClass{
	}
	
	static class StaticInnerClass{
	}
	
	public static void main(String[] args){
		OuterClass outerClass = new OuterClass();
		InnerClass innerClass = outerClass.new InnerClass();
		StaticInnerClass staticInnerClass = new StaticInnerClass();
	}
}

5、初始化顺序
由父及子,静态先行

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值