JAVA代码块

所谓的java代码块是表示"普通的代码块","构造代码块",和“静态的代码块”

普通代码块:是指在类的方法里写的代码块,我们来看这个例子:

public class CodeBlock1 {
	public static void main(String []args){
		{
			String normal_code="这个是一个普通的代码块1";
             System.out.println(normal_code);
		}
		String string="我在普通代码块的外面";
		System.out.println(string);
		{
			System.out.println("我是普通代码块3");
		}
		new CodeBlock1().functionTest();
	}
	public void functionTest()
	{
		{
			System.out.println("我在函数functionTest中,我是普通的代码块1");
		}
		System.out.println("我是函数functionTest中的语句");
		{
			System.out.println("我是函数functionTest中,我是普通代码块2");
		}
	}

}
我们在主函数中和普通函数中都是可以自定义代码块的,普通的代码块有一个特点是按照定义的顺序来执行。

所以上面的执行结果是:

这个是一个普通的代码块1
我在普通代码块的外面
我是普通代码块3
我在函数functionTest中,我是普通的代码块1
我是函数functionTest中的语句
我是函数functionTest中,我是普通代码块2
上面是介绍的普通的代码块,下面我们来看看静态的代码块

静态的代码块是我们在在类中创建的代码块,

static{

 。。。。

}

这样的形式来创建的代码块,静态的代码块和静态的方法有一点相似之处是,在创建的时候jvm会为它分配内存空间,所以在程序中当我们调用类的时候就可以执行,他的功能是用来初始化类的,因此不用创建对象就可以执行

我们看下面这个例子:

package code;

public class CodeBlock1 {
	public static String static_init;
	public String normal_string;
	public static void main(String []args){
		System.out.println("我是变量static_init="+static_init);
		{
			String normal_code="这个是一个普通的代码块1";
             System.out.println(normal_code);
		}
		String string="我在普通代码块的外面";
		System.out.println(string);
		{
			System.out.println("我是普通代码块3");
		}
		new CodeBlock1().functionTest();
	}
	public void functionTest()
	{
		System.out.println(normal_string);
		{
			System.out.println("我在函数functionTest中,我是普通的代码块1");
		}
		System.out.println("我是函数functionTest中的语句");
		{
			System.out.println("我是函数functionTest中,我是普通代码块2");
		}
	}
	static{
		System.out.println("这是一段静态的代码块,我执行的速度是非常的块的,在主函数之前我就"
				+ "执行了");
		static_init="在静态代码块中进行了初始化";
		new CodeBlock1().normal_string="你好啊,我是normalString";

	}

}
我们在这个类的最后创建了一个静态的代码块,我们来开一下运行的结果:

这是一段静态的代码块,我执行的速度是非常的块的,在主函数之前我就执行了
我是变量static_init=在静态代码块中进行了初始化
这个是一个普通的代码块1
我在普通代码块的外面
我是普通代码块3
null
我在函数functionTest中,我是普通的代码块1
我是函数functionTest中的语句
我是函数functionTest中,我是普通代码块2
我们可以看到的是在输出结果中静态代码块中代码是最先执行的,但是也就仅仅执行了一次,并且我们在静态代码中给静态变量赋值了,static_init得到了这个值,但是非静态的成员变量normal_string我们也试图在静态代码执行的时候进行赋值,但是最后还是输出了null可见是没有赋值成功的,这个是为什么,这个是因为我们在执行静态代码的的时候还没有实例化任何的对象,我们知道静态的成员变量和方法是属于类的,但是非静态的成员变量和方法却是属于对象的,既然在静态代码执行的时候还不存在对象,那么何来的对象的成员变量,也就是没有鸡,蛋从何来的到道理,不也不算是这个道理,因为我们也不知道蛋和鸡谁先来的,,

对还有构造代码块:我们来看下面的例子:

package code;

public class CodeBlock1 {
	public static String static_init;
	public String normal_string;
	public static void main(String []args){
		System.out.println("我是变量static_init="+static_init);
		{
			String normal_code="这个是一个普通的代码块1";
             System.out.println(normal_code);
		}
		String string="我在普通代码块的外面";
		System.out.println(string);
		{
			System.out.println("我是普通代码块3");
		}
		new CodeBlock1().functionTest();
	}
	public void functionTest()
	{
		System.out.println(normal_string);
		{
			System.out.println("我在函数functionTest中,我是普通的代码块1");
		}
		System.out.println("我是函数functionTest中的语句");
		{
			System.out.println("我是函数functionTest中,我是普通代码块2");
		}
	}
	static{
		System.out.println("这是一段静态的代码块,我执行的速度是非常的块的,在主函数之前我就"
				+ "执行了");
		static_init="在静态代码块中进行了初始化";
		new CodeBlock1().normal_string="你好啊,我是normalString";

	}
	{
	   System.out.println("我是构造代码块");
	}

}
我在这个class的最后创建的一个构造代码块,构造代码块是在初始化对象的执行,我们来看一下给程序的执行的结果

这是一段静态的代码块,我执行的速度是非常的块的,在主函数之前我就执行了
我是变量static_init=在静态代码块中进行了初始化
这个是一个普通的代码块1
我在普通代码块的外面
我是普通代码块3
我是构造代码块
null
我在函数functionTest中,我是普通的代码块1
我是函数functionTest中的语句
我是函数functionTest中,我是普通代码块2
构造代码块是我们在类中定义的,我们当我们实例化对象的时候会被自动的调用,但是因为我们有构造函数所以说构造代码的作用不是太大。。。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值