Java静态域与静态方法

Java静态域与静态方法

@(JAVA)[java]

在Java中,静态修饰符static只能用于类的成员变量与成员方法。

(一)静态域

1、静态变量

如果将某个变量定义为static,那么这个类及其所有对象共享同一个值,它在内存中只存在一份,严格来说是在每个JVM中只存在一份。
比如:

public class Employee{
    private int id;
    private static int nextId = 1;
}

每个Employee对象都有一个id的拷贝,而且它们的值并不相同。但所有的Employee共享同一个nextId的值,它在JVM中只存在一份。

2、静态常量

其实静态变量使用得相对较少,它一般会结合一些设计模式使用(如单例)。但静态常量却使用得非常的多,如Math类中的:

public static final double PI = 3.1415926538979323864;

另一个使用得非常多的是System.out,它在System类中被声明:

public static final PrintStream out = ...

(二)静态方法

静态方法不需要先实例化对象,再进行调用,面是可以直接使用类名进行调用。常用于一些工具类(utils等),如Math类中的很多方法:

Math.pow(5,2);

静态方法不能操作对象,也不能在静态方法中访问实例域(但可访问静态域)。

在以下2种情况使用静态方法:
* 【工具类】一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(如Math.pow())
* 一个方法只需要访问类的静态域(如Employee.geetNextId())

(三)静态成员类

请参考《effective java》第24条

(三)小结

  1. 静态域在内存中只存在一份,所有对象共享。静态常量更觉,静态变量更多与一些设计模式结合使用。
  2. 静态方法更多用于工具类,或者是只访问类的静态域的情形。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值