赣州新闻网

首页 / 科技

移动互联网市场运营推广策划案

2020-03-21 · 赣州新闻网 · 科技

static关键字

当一个变量前面有了static这个修饰符,内存会为它分配唯一的一块存储空间。
程序跑起来的时候,变量就存在在内存里了。谁要用它,就去访问一下它所在的内存。

1.修饰

public class Test {
public void update(){
System.out.println(\"update\");
}
public static class InnerClass{
public static void add(){
System.out.println(\"============= 内部类 静态add方法=============\");
}
public void delete(){
System.out.println(\"============= 内部类 delete方法 =============\");
}
}
public static void main(String args){
Test.InnerClass.add();
InnerClass innerClass = new Test.InnerClass();
innerClass.delete();
Test test =new Test();
test.update();
}
}

2.修饰方法;

3.修饰变量常量;

4.静态代码块;

static特点:

1,随着类的加载而加载,也就是说静态会随着类的消失而消失,说明他的生命周期最长

2,优先于对象的存在。(静态先存在,对象后存在。)

3,被所有对象所共享

4,可以直接被类名调用

静态类作用:

1.静态类。常见形式作为一般工具类

2.缓存:提前将数据保存到对象中,其实就是加载到内存中,提高效率
3.计数,统计相关的应用

在多线程中使用静态方法是否有线程安全问题?

在多线程中使用同一个静态方法时,每个线程使用各自的实例字段(instance field)的副本,而共享一个静态字段(static field)。所以说,如果该静态方法不去操作一个静态成员,只在方法内部使用实例字段(instance field),不会引起安全性问题。但是,如果该静态方法操作了一个静态字段,则需要静态方法中采用互斥访问的方式进行安全处理。

静态方法如果没有使用静态变量,则没有线程安全问题。
因为静态方法内声明的变量,每个线程调用时,都会新创建一份,而不会共用一个存储单元。比如这里的tmp,每个线程都会创建自己的一份,因此不会有线程安全问题;

静态变量,由于是在类加载时占用一个存储区,每个线程都是共用这个存储区的,所以如果在静态方法里使用了静态变量,这就会有线程安全问题


final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。

final的特点

1 .final修饰类不可以被继承,但是可以继承其他类。

2.l final修饰的方法不可以被覆盖,但父类中没有被final修饰方法,子类覆盖后可以加final。

3.l final修饰的变量称为常量,这些变量只能赋值一次。

4.l 引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性值可以修改。


类型生命作用采用共享大余互联网市场运营