今天由于项目需要,需要开发java的程序,于是就开始学习java语言,在看别人代码学习的过程中,发现了static关键字,仔细看了下,发现还是和c,c++中有些不同的,现在把3者的比较做个记录。
java中的static
java中的static用来修饰类的成员函数,或者是成员变量,这样这些变量就成为了静态方法(类方法)和静态变量(类变量)
比如有类A中定义了静态变量varsample,静态方法funcSample();
那么我们就可以这么调用他们A.varsample,A.funcSample(), 创建一个A类的实例 A a = new a(),a.varsample(可以,但不推荐)a.funcSample()(不可以)
此外静态方法有一些限制:1.只能调用静态方法,使用静态变量 2.不能调用this或者super
static变量存放在常量和静态变量区,在编译时分配内存。
java中的静态函数类似于ios中的以+号开头的静态函数
c中的static
c中的static也可以用来修饰变量和函数,称之为静态变量(内部变量)和静态函数(内部函数)
他们是与java不同的,c中的静态变量中静态标示的是变量的作用域。
这里静态变量根据声明的位置不同,可以分为全局静态变量和局部静态变量
其中全局静态变量的作用域为定义开始到文件结束。
局部静态变量的作用域为定义开始到函数或者语句块结束处。
但是全局静态变量和局部静态变量都是存储在全局数据区的,只有当程序结束时才会释放。
静态函数中的静态也是指作用域,他的作用域是声明开始到文件结束。
c++中的static
c++在static的使用分为一般使用和面向对象使用,前者就是类似c的static使用,而后者则类似java中static中的使用