java之Static关键字解析

来源:互联网 发布:海岛奇兵科技数据大全 编辑:程序博客网 时间:2024/06/13 10:32

                                       Java中的Static关键字



   对于Static关键字,相信大家都不陌生,还记得我们的第一个HelloWorld程序不?public static void main(String [] str){Stystem,out,println("helloWorld!")},但是对于其中的Static关键字,不知道大家都了解多少,在这我就谈谈。

Static,是静态的属性,静态方法,静态变量,都是用Static关键字去定义

1,内存分配

Static关键字定义的方法或者变量都属于静态的,一般我们在类中所定义的属性,基本上都是成员变量,这些变量属于对象,他们是对象的属性,所以只有在对象被创建的时候,虚拟机才会帮它分配内存,当然,静态的变量也是这样,但是不同于成员变量的是,每new一个对象出来的时候,虚拟机就会在堆中分配一块内存给这些变量,所以有多少个对象就会有多少个这些变量,但是静态的变量就不一样,静态的变量是属于类Class的,而不是属于对象的,当我们创建一个类的实例的时候,虚拟机就会为这个Static的变量分配一块内存,注意,虚拟机会在堆内存的DataSegment(数据堆)中为它分配内存,并且只分配一次,当以后再创建出实例的时候,也不会再分配内存了。

2,使用方法

我们知道,如果我们在一个类里边定义了一个属性,比如private int m=0;那当我们需要用到这个变量的时候我们会怎么做呢?没错,就是先创建出一个实例,然后用对象名.m来调用,同理,由于Static定义的方法和变量是属于类专有的,所以当我们要调用的时候,只需要类名.方法名/变量名就可以完成调用了,而不需要再去创建实例


3,注意事项

由于我们之前分析过的,Static的内存之分配一次,所以它可以说是共享的,任何地方去调用类名.方法名/变量名就可以去调用,所以在使用Static的时候要注意使用的地方,因为一旦有一个对象将这个静态的变量的值修改了,那就永远的修改了,当下一个对象要调用这个静态的值的时候,其实这时候的值是被修改过的。


好了,基本上就是这么多了,对了,因为调用静态的变量,方法不需要创建实例,所以在一个Static函数里边是不能访问非Static类型的变量或者方法的,否则就会报错!大家可以去实践一下,想清楚了就OK了

如果大家有什么补充或者我的什么错误我没有发现的,欢迎在评论区留言,大家互相学习!
原创粉丝点击