static关键字的理解

博客介绍了static的作用。在函数体中,static变量内存只分配一次,下次调用值维持上次的;模块内static全局变量和函数作用域限于模块内;类中static成员变量为所有实例共享,static成员函数属整个类,只能访问static成员变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/Basis/final、static、this、super.md

 

参考代码:

package cn.pckj.homework;

public class MyClass {
	
	private static int a;
	private int b;
	public void Result(){
		System.out.println("a="+a+";");
		System.out.println("b="+b+";");
	}
	public static void main(String[] args) {
		MyClass obj1,obj2;
		obj1 = new MyClass();
		obj2 = new MyClass();
		obj1.Result();//a = 0; b = 0;
		
		obj1.a = 60;
		obj1.b = 3;
		
		obj2.a = 100;
		obj2.b = 9;
		
		obj1.Result();
		obj2.Result();

                //执行结果:
		//a=0; b=0; a=100; b=3; a=100; b=9; 有static int a;
		//a=0; b=0; a=60; b=3; a=100; b=9 没有static int a;
		
	}
}


//例二:
package cn.pckj.homework;

public class Tom {
	private float weight;
	//private String name;//不能对非静态字段Tom.name进行静态引用
	private static String name;
	public void setWeight(float weight){
		this.weight = weight;
	}
	private void out(){
		System.out.println(name+"体重"+weight+"斤");
	}
	
	public static void main(String[] args) {
		Tom.name = "汤姆猫";
		Tom cat = new Tom();
		cat.setWeight(20);
		cat.out();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值