1、静态字段
如果将一个字段定义为static,每个类只有一个这样的字段。而对于非静态的实例字段,每个对象都有自己的一个副本。
例如:
class Employee
{
private static int nextId = 1;
private int id;
...
}
其中,每一个Employee对象都有一个自己的id字段,但这个类的所有实例将共享一个nextId字段。换句话说,如果有1000个Employee类对象,则有1000个实例字段id,分别对应每一个对象。但是,只有一个静态字段nextId。即使没有Employee 对象,静态字段nextId 也存在。它属于类,而不属于任何单个的对象。
注释:
在一些面向对象程序设计语言中,静态字段被称为类字段。术语“静态”只是沿用了C++的叫法,并无实际意义。
2、静态常量
Math
类中的一个静态常量
public class Math
{
...
public static final PI = 3.1415926535897932846;
...
}
在程序中用Math.PI来访问这个变量。
如果省略关键字static, PI 就变成了Math 类的一一个实例字段。也就是说,需要通过Math类的一个对象来访问PI,并且每一一个Math对象都有它自己的一个PI副本。
System类
中你的一个静态常量
public class System
{
...
public static final PrntStream out = ...;
...
}
静态常量只能访问,不能直接修改。
如:
System.out = new PrintStream(...); // ERROR--out is final
3、静态方法
静态方法是不在对象上执行的方法。例如,Math类中pow方法就是一个静态方法。表达式:Math.pow(x,a)
.
Employee类的静态方法不能访问id实例字段,因为它不能在对象上执行操作。但是,静态方法可以访问静态字段。
示例:
public static int getNextId()
{
return nextId; //返回静态字段
}
可以直接用类名调用该方法:
int n = Employee.getNextId();
在下面两种情况下可以使用静态方法:
- 方法不需要访问对象状态,因为它需要的所有参数都通过显式参数提供(例如:(Math.pow)。
- 方法只需要访问类的静态字段( 例如: Employee . getNextId)。
4、main方法
需要注意,可以调用静态方法而不需要任何对象。例如,不需要构造Math类的任何对象就可以调用Math,pow。同理,main 方法也是-一个静态方法。
public class Application
public static void main(String[] args)
// construct objects here
...
}
}
main方法不对任何对象进行操作。事实上,在启动程序时还没有任何对象。静态的main方法将执行并构造程序所需要的对象。
提示:
每一个类可以有一个main方法。这是常用于对类进行单元测试的一个技巧。例如,可以在Employee类中添加一个main方法:
class Employee public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; hireDay = LocalDate. of(year, month, day); } public static void main(String[] args) // unit test { var e = new Employee("Romeo", 50000, 2003, 3, 31); e.raiseSalary(10); System.out . println(e.getName() +""+ e.getSalary()); }
如果想要独立地测试Employee类,只需要执行
java Employee
如果Employee类是一个更大型应用程序的一部分,就可以使用下面这条语句运行程序文章来源:https://www.toymoban.com/news/detail-691661.html
java Application
Employee类中的main方法永远不会执行文章来源地址https://www.toymoban.com/news/detail-691661.html
到了这里,关于Java--静态字段与静态方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!