小白学Java核心知识点(面向对象)十二:关于静态代码块

需要注意以下几点:
一、什么叫做类初始化?类初始化是一个类进内存不需要对象的情况下应该做的事情。
二、随着类的加载而执行,只执行一次,并优先于主函数。(先执行文件名类,再执行定义类中static,再执行System.out.println();同时当主函数下有两个相同的new 语句时候,只执行一个语句)。
三、System.out.println(“a”+this.num);这句话不能执行,而System.out.println(“c”+this.num)这句话能执行是因为当执行完System.out.println(“a”)时候,已经将对象进行初始化了,所以
System.out.println(“c”+this.num)中this已经有了对象。
四、new StaticCode(4)语句只能调用 StaticCode(int x)这个构造函数,而与StaticCode()语句无任何关系

/*
静态代码块。
格式:
static
{
	静态代码块中的执行语句。
}

特点:随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。

*/

class StaticCode
{
	int num = 9;
	StaticCode()
	{
		System.out.println("b");
	}

	static
	{
		System.out.println("a");
	}
	{
		System.out.println("c"+this.num);
	}

	StaticCode(int x)
	{
		System.out.println("d");
	}
	public static void show()
	{
		System.out.println("show run");
	}
}

class StaticCodeDemo 
{
	static
	{
		//System.out.println("b");
	}
	public static void main(String[] args) 
	{
		new StaticCode(4);//a c d 
		//new StaticCode();
		//new StaticCode();
		//System.out.println("over");
		//StaticCode.show();
		//StaticCode s = null;
		//s = new StaticCode();

		//StaticCode.show();


	}
	static
	{
		///System.out.println("c");
	}
}
//d:\>java0217\day06>java StaticCodeDemo
//b c a over

猜你喜欢

转载自blog.csdn.net/weixin_45246666/article/details/107733717