黑马程序员技术交流社区
标题:
java初学者笔记4——Java静态成员
[打印本页]
作者:
郑泽霖
时间:
2014-11-17 14:06
标题:
java初学者笔记4——Java静态成员
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;
静态成员在头文件的声明中不能初始化!
可以在源文件的定义中初始化。
对象可以引用静态成员。
作者:
郑泽霖
时间:
2014-11-17 14:09
1静态代码块static{}
public class TestStaticCon
{
public static int a=0;
static{
a=10;
}
//static{},在类加载时自动执行
......
2构造代码块{}
class Demo
{
{
......
}
//没有函数头
//当类的任何构造函数执行前,都会执行一次
//用不同的或相同的构造方法创建的不同对象都会执行相同的构造代码块
Demo()
{
......
}
Demo(int x)
{
......
}
}
3局部代码块
class X
{
public static void main(String args)
{
{
int x=5;
System.out.println(“局部代码块:”+x);
}
//控制局部变量的声明周期
//当代码块结束时立即释放栈中x的内存,而不是等到函数结束后
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2