什么是静态变量?
静态变量(Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。
与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。
java里的静态变量是放在了堆内存还是栈内存?
静态变量静态变量是用static修饰的成员变量,也称为类变量。未用static修饰的成员变量称为实例变量。实例变量必须通过对象访问,而静态变量可以通过对象访问,也可以通过类名直接访问。例如:math.pi对该类的每一个具体对象而言,类变量是一个公共的存储单元,任何一个类的对象访问它,取到的值都是相同的;同样任何一个类的对象去修改它,也都是在对同一个内存单元进行操作。
静态变量和常量的区别?
区别:
1、(本质)static是类型引用,const是实例引用。
2、(初始化)静态变量的初始值必须是一个常量。静态初始值默认为0,而常量也默认为0(吗?)。
3、(赋值)静态变量的值在运行时可以更改赋值,而常量的值是不可改变的,运行一开始已经固定,之后修改会报错。
4、(内存)静态变量存放在全局数据区中,伴随着这个程序流程,能将此变量的值保留到下次调用,不过数据过大的静态变量有可能造成内存泄露。 而const常量算是一个普通的只读变量,随函数结束而结束。在C里,const常量总是会分配内存,位于只读数据段。在C++,如果const常量在没有声明为extern,那么就是一个编译时的符号,不占用内存。
请问java中的成员变量,局部变量,静态变量和实例变量都有什么关系?怎么理解和使用?
成员变量: 是类中定义变量,也叫类的属性
局部变量: 是方法中定义的变量
静态变量: 是static修饰词修饰的变量(可以是成员变量,也可以是局部变量)
实例变量: 是类实例化后的属性(成员变量)