JAVA什么时候使用static修饰符

1.static关键字的作用
有static修饰的成员属于类本身,没有static修饰的成员属于类的实例。
2. 什么是static修饰符
在程序中static修饰的任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。
这样的设计,static可以用来区分成员变量方法是属于类本身还是属于类实例化后的对象。有static修饰的成员属于类本身,没有static修饰的成员属于类的实例。

1. 经常用到的方法,可以声明为static,在外部调用静态方法时,可以使用“类名.方法名”或者“对象名.方法名”的形式。这样省去了每次new对象的内存空间,因为非static方法,需要new对象才能调用此方法。但因此也产生多线程访问线程安全问题。

当一个方法或者变量需要在类加载器加载类的时候就被初始化,则声明为static。Static变量在项目启动时就分配内存,直到程序结束释放内存。static和const变量在项目启动时就已经分配内存了,而且方法调用之后也不会被释放。

class MyClass {
    public final double differentValue = Math.random();
    public static double sameValue = Math.random();
}

  如上示例中,differentValue的值每次都变化,但是sameValue的值是相同的。

  3.声明为static方法后,内存中就只有一份数据了。所以就要注意线程安全问题,就需要加同步处理。线程就会等待访问了,就会有线程安全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值