【Java】静态域与静态方法

本文介绍了Java中静态域的概念,指出静态域属于类而不属于对象,所有类的实例共享同一静态域。接着讨论了静态常量的使用,如Math类中的PI,强调静态常量的便捷访问方式。此外,还详细阐述了静态方法的特性,即不能访问实例域,但可以直接调用静态域。最后提到了main方法作为最常见的静态方法,以及在何种情况下应使用静态方法。

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

(一)静态域

如果将静态域定义为 static ,每个类只有一个这样的域。假如给学生类添加一个实例域id与静态域nextId,那么每个学生对象都有一个自己的id域,但这个类的所有实例将共享一个nextId,即这些实例的nextId的内容是一样的。静态域属于类,不属于任何对象,对象调用不了它,只能由类调用。

class Student{
	//静态域nextId
	private static int nextId=1;
	//非静态域
	private int id;
	...
}
....
Student a = new Stundet(...);
Student b = new Stundet(...);
a.nextId;//对象不可以调用
Student.nextId()//类可以调用

(二)静态常量

静态变量使用的比较少,静态常量使用的比较多。当我们需要用到 π 的值的时候,该怎么获得?
在Math类中定义了一个静态常量PI,(PI为π的值),我们可以Math.PI直接获取PI的值。

public class Math{
	...
	//加了final是防止被修改
	public class static final PI = 3.1415926358979323846;
	...

如果去掉static,我们只能通过Math对象来调用了


(三)静态方法

静态方法是一种不能向对象实施操作的方法,也只能由其类调用,不能由对象调用,静态域不能访问实例域,但是可以访问自身的静态域。

public static int getNextid{
	retrurn nextId;
	//return id; //错误 静态方法不能访问实例域
}

上面的static能去掉吗? 答案是能,但是这样就不是静态方法了,需要由类的对象的引用来调用这个方法了 Student a = new Student(…); a.getNextid();

在下面两种情况下使用静态方法:
1.一个方法不需要访问对象状态,其所需参数都是通过显示参数提供(如 Math.pow)。
2.一个方法只需要访问类的静态域(如 Student,getNextid())。

最常见的静态方法是main方法:public static void main(String[] args){}。
还有一个工厂方法后续会讲。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值