关于Java中静态字段与静态方法的讨论
2023-02-18 16:27:08 时间
前言
下面来看这样一段代码
public static void main(String[] args) {
System.out.println("hello world");
}
main方法中加入,static,修饰符,下面我们来讨论这个修饰符的含义。
静态字段
如果将一个字段定义为static,每个类只有这样一个的字段,而对于非静态的实例字段,每个对象都有自己的一个副本,例如:,假设需要给每个员工赋予唯一的标识码,这里给Employee类添加id和一个静态字段nextId:
class Employee{
private static int nextId = 1;
private int id;
}
现在,每一个Employee对象都又一个自己的id字段,但这个类所有实例将共享一个nextId字段。
静态常量
静态变量使用比较少,但静态常量却很常用,例如我们定义一个PI常量:
public class Math{
public static final double PI = 3.1415926;
}
好处:可以直接用Math.PI来访问这个常量
如果,省略static PI就变成了Math类的一个实例字段。也就是说,需要通过Math类的一个对象来访问PI,并且每一个Math对象都有他自己的一个PI副本。
静态方法
静态方法是不在对象上执行的方法。例如,Math类的pow方法就是一个静态方法。表达式:Math.pow(x,a)
不难看出,在完成运算的时候,他并没有使用Math对象,换句话说他没有隐式参数。可以认为静态方法是没有this参数的方法。
静态方法的俩种场景:
- 方法不需要访问对象状态,它所需要的所有参数都要通过显式参数提供
Math.pow(3,5)
- 方法只需要访问类的静态字段(例子见下)
public static int getId(){
return Id;
}
main方法
上面我们说了静态方法,同上,main方法也是一个静态方法。
public static void main(String[] args){
}
main方法不需要对任何对象进行操作,但是实际上,在启动程序的时候,还没有任何对象。静态的main方法将执行并构造程序所需要的对象
最后
本文为博主学习使用 参考书籍 ——java核心技术卷1
相关文章
- VSCode 插件 Project Manager 管理项目
- iStatistica Pro for Mac(系统监控工具) v5.1中文免激活版
- 编程语言排行榜
- Markdown常用书写语法合集
- VSCode 插件 Dyno File Utils 脱离鼠标管理文件
- 对象拷贝: 浅拷贝、深拷贝
- 通过工厂函数、构造函数创建对象
- 强化学习技巧四:模型训练速度过慢、GPU利用率较低,CPU利用率很低问题总结与分析。
- 初识: 对象的属性特征
- numpy数组拼接方法介绍(concatenate)---一次性完成多个数组的拼接
- 禁止添加属性、封闭对象、冻结对象的 API
- VSCode 自定义字体、连字效果
- UltraEdit for Mac(高级文本编辑器)v21.00.0.36中文版
- 突破内存墙能带来什么?看火山引擎智能推荐服务节支增效实战
- “三能”赋能绿色数据中心 泛在算力夯实智能社会基石
- 【一】最新多智能体强化学习方法【总结】
- 【二】最新多智能体强化学习文章如何查阅{顶会:AAAI、 ICML }
- 【三】多智能体强化学习(MARL)近年研究概览 {Analysis of emergent behaviors(行为分析)_、Learning communication(通信学习)}
- 零信任安全:金融数字化棋至中局的“胜负手”
- 【四】多智能体强化学习(MARL)近年研究概览 {Learning cooperation(协作学习)、Agents modeling agents(智能体建模)}