static

static:静态的

1)静态变量:

1.1)由static修饰

1.2)属于类,存储在方法区中,只有一份

1.3)常常通过类名点来访问

1.4)何时用:所有对象所共享的数据(图片、音频、视频等)

2)静态方法:

2.1)由static修饰

2.2)属于类,存储在方法区中,只有一份

2.3)常常通过类名点来访问

2.4)静态方法中没有隐式的this传递,所以不能直接访问实例成员

2.5)何时用:方法的操作与对象无关

2.6)被static修饰的方法中不能直接调用外面的方法的,所以如果想要调用的话,需要先创建当前World类对象,而后再通过引用.来调用其他方法

3)静态块:

3.1)由static修饰

3.2)属于类,在类被加载期间自动执行, 一个类只被加载一次,所以静态块也只执行一次

3.3)何时用:初始化/加载静态资源(图片、音频、视频等)

  • 图片、音频、视频   数据-----------------静态变量中
  • 给图片、音频、视频数据   赋值-----------静态块中
  • 对图片、音频、视频数据   做操作---------静态方法中
//static的演示
public class StaticDemo {
	public static void main(String[] args) {
		Loo o1 = new Loo();
		o1.show();
		Loo o2 = new Loo();
		o2.show();
		Loo o3 = new Loo();
		o3.show();
		System.out.println(Loo.b); //常常由类名点来访问
		
		Moo.test(); //常常由类名点来访问
		
		Noo o4 = new Noo();
		Noo o5 = new Noo();
		Noo o6 = new Noo();
	}
}

class Noo{ //演示静态块
	static {
		System.out.println("静态块");
	}
	Noo(){
		System.out.println("构造方法");
	}
}





class Moo{ //演示静态方法
	int a;        //实例变量(对象点来访问)
	static int b; //静态变量(类名点来访问)
	
	void show() { //有隐式this
		System.out.println(this.a);
		System.out.println(Moo.b);
	}
	static void test() { //没有隐式this
		//静态方法中没有隐式this传递,
		//没有this就意味着没有对象,
		//而实例变量a必须通过对象点来访问
		//所以下面的代码发生编译错误
		//System.out.println(a); //编译错误
		System.out.println(Moo.b);
	}
}

class Loo{ //演示静态变量
	int a;  //实例变量。存储在堆中,有多次
	static int b; //静态变量。存储在栈中,只有一份
	Loo(){
		a++;//每次运行都是1,因为每次都是新对象
		b++;//每次运行增1,因为只有一份
	}
	void show() {
		System.out.println("a="+a+",b="+b);
	}
}

 

成员变量:

1)实例变量:没有static修饰,属于对象,存储在堆中,有几个对象就有几份,通过对象点来访问

2)静态变量:由static修饰,属于类,存储在方法区中,只有一份,通过类名点来访问

 

堆:new出来的对象(包括实例变量)

栈:局部变量(包括方法的参数)

方法区:.class字节码文件(包括静态变量、方法)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

謹言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值