3.1.9 static关键字

本文解释了如何在类中定义静态属性和方法,它们作为类的共享资源,可以在未创建对象时被访问。静态属性示例展示了如何影响所有对象,而静态方法则强调了它们的类内访问权限。理解这些概念有助于提高代码的组织和效率。

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

3.1.9 static关键字

在定义一个类时,只是在描述某事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建该类的实例对象时,才会开辟栈内存及堆内存,在堆内存中要保存对象的属性时,每个对象会有自己的属性。
如果想要有这样的类成员,在没有创建对象的情况下,就可以访问,该怎么做呢?
这样的成员(属性/方法)可以用static修饰。

静态属性

在类中使用static修饰的属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问,访问格式如下:
类名.属性名
也可以通过对象名.属性名访问
注意,某个对象修改了静态属性的值,别的对象再访问时获取的就是修改后的值。

例1:

class Student{
	String name;
	static String school="清华大学";
	
	public Student(String name){
		this.name=name;
	}
	public void show(){
		System.out.println("姓名:"+name+",学校:"+school);
	}
}

public class Test{
	public static void main(String[] args){
		Student stu1=new Student("张三");
		Student stu2=new Student("李四");
		stu1.show();
		stu2.show();
	}
}

上面的代码运行结果是:

姓名:张三,学校:清华大学
姓名:李四,学校:清华大学

如果修改一下main方法:

Student stu1=new Student("张三");
Student stu2=new Student("李四");
stu1.school="北京大学";
stu1.show();
stu2.show();

上面的代码运行结果是:

姓名:张三,学校:北京大学
姓名:李四,学校:北京大学

可以看到,通过stu1.school=“北京大学”,修改了静态属性school的值,再通过stu2访问school时获得的就是修改后的值。
所以静态属性就是类的“全局属性”,是属于类的属性,面向该类的所有对象公开,所有对象都可以访问或修改。
在这里插入图片描述
打个比方,就像寝室的空调,是寝室的公共电器,寝室的所有同学都可以调温度,某个同学调了空调的温度,自然会影响到全寝室的所有同学。

静态方法

与静态属性一样,也可以用static修饰方法,这种方法属于类的方法,可以不需要创建对象,通过类名访问。当然该类的所有对象也可以访问这个静态方法。
例2:

class Student{
	String name;
	static String school="清华大学";
	
	public Student(String name){
		this.name=name;
	}
	public static void show(){
		System.out.println("学校名称:"+school);
	}
}

public class Test{
	public static void main(String[] args){
		Student.show();
		Student.school="北京大学";
		Student.show();
	}
}

上面的代码运行结果是:

学校名称:清华大学
学校名称:北京大学

注意:
在普通方法中可以访问所有静态或非静态的成员,例如上面例1中Student类的show方法,但是在静态方法中只能访问静态成员,例如上面例2中Student类的show方法,如果想在静态方法中访问非静态成员,会报错。

class Student{
	String name;
	static String school="清华大学";
	
	public Student(String name){
		this.name=name;
	}
	public static void show(){
		System.out.println("姓名:"+name+"学校名称:"+school);
	}
}

上面的show方法中,试图访问非静态属性name,程序报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值