static是什么
static是java中的关键字,static表示”全局”、“静态”的意思,用来修饰成员变量和成员方法,定义的变量,我们通常将用static修饰的成员称为静态变量,静态方法或者静态成员。
static的作用
- 被static修饰的成员变量和成员方法独立于该类的任何对象
- static修饰的成员变量和成员方法可以直接通过类名来访问
对上面4条作用的解释并举例说明
1、被static修饰的成员变量和成员方法独立于该类的任何对象
在jvm虚拟机中,被static修饰的成员都存储在方法区中。
方法区:它也叫“静态区”,被所有的线程共享,它包含了所有的static变量。
而不被static修饰的成员我们称为普通变量,这些变量存储于jvm的堆中。
方法区中存放的静态变量不会随着对象的消失而消失,只会在程序结束之后才会被回收。
堆:所有创建的对象都存储在里面,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。
举个例子
package staticProblem;public class Common {private static String staticStr;private String commonStr;public void input(){System.out.println(staticStr + " " + commonStr);}public static void main(String[] args) {Common.staticStr = "张";Common common1 = new Common();common1.commonStr = "三";common1.input();Common common2 = new Common();common2.input(); }
}
运行结果如下:
张 三
张 null
从上面可以看到:
静态变量staticStr并不会随着对象的消失而消失,他还是会存在,而普通变量commonStr存放在堆中,会重新加载。
2、static修饰的成员变量和成员方法可以直接通过类名来访问
举个例子就明白了
代码如下
package staticProblem;public class Common {private static String staticStr;private String commonStr;public void input(){System.out.println(staticStr + " " + commonStr);}public static void staticInput(){System.out.println(staticStr);}public static void main(String[] args) {System.out.println("静态方法:");Common.staticStr = "张";Common.staticInput();System.out.println("------------------------");System.out.println("普通方法:");Common common = new Common();common.input();}
}
运行结果:
静态方法:
张
------------------------
普通方法:
张 null
由结果可知:
加上static关键字的方法成员变量不需要再经过实例化new,这样的操作方便了许多,且性能上也提高了。
总结:
静态变量就像是外面的情侣套房,情侣们给钱就能入住,所使用的床,浴池等等都是一样的,而成员变量就像是一对对进来入住的情侣,他们所带来的与所产生的东西都是不同的,这些物品会随着他们的消失而消失。但是套房里的物品并不会因为他们的离开而消失,而是随着这家酒店宾馆的倒闭而消失。
北京市需要租房或者转租房子,找舍友合租的都可以关注这个公众号哦,可帮忙发布房源信息,上面也有uu发布的转租信息呢。











![[培训-DSP快速入门-2]:C54x DSP处理器的架构](https://img-blog.csdnimg.cn/2021071914514657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hpV2FuZ1dlbkJpbmc=,size_16,color_FFFFFF,t_70)








![[培训-DSP快速入门-1]:DSP概述(基本框架、CPU, GPU, FPGA比较,常见型号)](https://img-blog.csdnimg.cn/img_convert/4cce110c31c58c76a3dd034c91c07612.png)