码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的静态代码块和构造代码块

时间:2016-07-23 13:22:41      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

  最近一在回顾Java中的一些知识,这里跟大家一起学习一下静态代码块,和构造代码块。

首先,代码就是巴拉巴拉一些定义呀,赋值啊,运算的一些java代码,用两个大括号括起来,就变成了神奇的代码块

{
        a=3;
}

static{
        b=4;
}

 就像上面那个样子。

括号加了static修饰就变成了静态代码块,大家记住哦,只要加了static这个东西只后,后面那个东东就是静态的,而且只能操作静态的东东。

比如静态方法,静态变量,静态指针,当然java里没有指针。

然后我用了一个小代码去理解这两个概念,上代码

class Man{
	private String name = "X";
	private int age;
	private static boolean isMan ;
	
	public void showMan(){
		System.out.println(name);
		System.out.println(age);
	}
	public static void showManStatic(){
		System.out.println(isMan);
	}
	{ //代码块1
		System.out.println("--------block 1--------");
		age = 10;
		showMan();
	}
	public  String getName(){
		return name;
	}
	public  int getAge(){
		return age;
	}
	Man(){
		System.out.println("creator");
		name = "Seeee";
	}
	static { //静态代码块 ,只能操作静态成员 isMan
		System.out.println("我是静态代码块1");
		//showMan();  这个很重要,showMan是普通成员函数,不是静态的,所以不能用
		showManStatic(); //这个就可以哦
		System.out.println("isMan"+isMan);
		isMan = true;
	}
	{//代码块2
		System.out.println("--------block 2--------");
		age = 12;
		showMan();
	}
	
	{//代码块3
		System.out.println("--------block 3--------");
		age = 13;
		showMan();
	}
	static { //静态代码块2

		System.out.println("我是静态代码块2");

	}
}

class Test{
	public static void main(String[] args){
		Man m = new Man();
		System.out.println(m.getName());
		System.out.println(m.getAge());
	}
}

/////////////////////////////////////////////下面是结果
我是静态代码块1
false
isManfalse
我是静态代码块2
--------block 1--------
X
10
--------block 2--------
X
12
--------block 3--------
X
13
creator
Seeee
13

 神奇吧,static代码块首先被调用,而且只能调用静态方法和静态成员变量,记住,这一堆东西都是静态的哦。

然后才是普通代码块,估计是因为经常被人用于对象初始化吧,所以也叫构造代码块,而且顺序跟上下顺序一样,1到2再到3,静态也是这样,最后才是开始构造对象。

这玩意咋理解,其实我也不大了解,如果有大神知道的话,能告诉小弟。

Java中的静态代码块和构造代码块

标签:

原文地址:http://www.cnblogs.com/mulog/p/5698416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!