Java基础---static关键字

static修饰成员变量:
把一个数据共享,该数据使用static修饰即可。
格式 static int age= 18 那么age在内存中只存在一份(节省空间)

static修饰成员函数:
静态成员函数的访问方式:
方式一:使用对象进行访问。 格式: 对象.函数名
方式二:使用类名进行访问。 格式: 类名.函数名。

静态成员函数要注意:
1. 静态函数可以使用对象或者类名进行调用,
非静态函数(不加static修饰的函数)只能使用对象进行调用。
2. 静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
原因:静态函数可以使用类名调用,而这时候对象可能还没有存在内存中,这时候非静态的数据也就不存在内存中。
3. 非静态函数可以直接访问静态以及非静态成员。
原因:非静态函数必须要由对象调用,如果对象存在了,静态数据以及非静态数据早就存在内存中。
成员:成员函数和成员变量
4. 静态函数不能出现this与super两个关键字。
原因:因为静态函数可以使用类名直接调用,而这时可能还没有对象存在,this又要代表当前对象。
以上原因:存在的问题,搞清谁先存在。

非静态的成员变量与静态成员变量的区别:

数量上的区别:    
    (n份)非静态成员变量是在每个对象中都维护一份数据
    (1份)静态成员变量只会在方法中维护一份数据。

访问方式上的区别:
    非静态的成员变量只能使用对象进行访问. 
    静态成员变量可以使用对象、类名进行访问。

存储位置上的区别;
    非静态成员变量是存储在堆内存中。
    静态成员变量是存储在方法区中。
    
生命周期的区别:
    非静态成员变量是随着对象的创建而存在,随着对象的消失而消失。
    静态成员变量是随着类文件的加载而存在,随着类文件(字节码文件)的消失而消失。

作用上的区别:
    非静态成员变量的作用是用于描述一类事物的属性。
    静态成员变量的作用是提供一个共享数据给所有对象使用的。 

什么时候使用static修饰一个函数呢?
如果一个函数没有直接访问非静态的成员,那么即可使用static修饰该函数了。(常用于工具类的方法 Arrays),也可以写完函数判断再添加
当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static。
static修饰的方法用类名直接调用,不用的要先实例化对象然后才可调用。

参考:https://blog.csdn.net/JinChao94/article/details/82385621

猜你喜欢

转载自blog.csdn.net/shenhaiyushitiaoyu/article/details/85064555