首先,这三种语言,非静态变量在定义时不会自动初始化,必须初始化才可以使用否则报错,静态变量会自动初始化。特殊的,C的变量必须在语句块头部定义,否则报错。静态变量的存放地址,在整个程序运行期间都是固定不变的。
C和C++
全局变量:在与main平行的位置,不在任何语句块内定义的变量,在程序的所有位置均有效。
局部变量:其他语句块内定义的变量称为局部变量。
全局变量都是静态变量,局部变量定义时如果前面加了“static”关键字,则该变量也成为静态变量。
静态变量的存放地址,在整个程序运行期间都是固定不变的
非静态变量(一定是局部变量)地址每次函数调用时都可能不同,在函数的一次执行期间不变
如果未明确初始化,则静态变量会被自动初始化成全0(每个bit都是0),局部非静态变量的值则随机
Java:
Java中一个类通过使用new运算符可以创建多个不同的对象,接着这些对象会被分配不同的变量,类体中包括成员变量和方法两部分,而其中的成员变量又可以分为实例变量和类变量两部分,实例变量和类变量在声明上的区别就是有无static关键字。
java中类变量(静态变量)的初始化:
变量类型 | 初始值 |
int,byte,short,long | 0 |
char | 一个空格 |
double,float | 0.0 |
引用值(比如String) | null |