Java静态成员
1为什么要用静态成员
当调用类功能时,没有用到类对象中封装的数据,该对象的创建没有意义,浪费堆内存的空间,应置为静态成员
2静态变量在静态函数和静态代码块之前初始化
主函数也是静态函数,所以静态变量在主函数执行前初始化,此时对象还没有产生
static int x=9;
static void show()
{
System.out.println(x);
}
3静态成员先于主函数初始化
因为主函数尚未执行所以对象没有产生,所以在静态成员中不能使用非静态成员。
虽然静态成员不属于任何一个对象,但对象可以使用静态成员。
静态成员不允许出现this,super关键字,静态成员执行时对象还没有产生,this和super根本没有指向。、
java中MAIN函数必须是静态的
main函数不能访问非静态成员,main函数不能使用this和super关键字
C++中main函数和其他普通非类成员函数一样都是全局函数,所以可以调用其他的普通函数(全局函数)
4输出数组名
C++用cout输出数组名得到的是数组的首地址
java用System.out.println输出数组名,得到:
[Ljava.lang.String;@1afae45
前半部分表示数组元素的类型,后半部分是散列值
5C++静态成员的定义和声明
静态成员必须在类的头文件中声明,在类的源文件中定义,然后才能使用:
类的头文件中:
static int a;
类的源文件中:
int ClassName::a;
静态成员在头文件的声明中不能初始化!
可以在源文件的定义中初始化。
对象可以引用静态成员。
|