标签:
最近一在回顾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,静态也是这样,最后才是开始构造对象。
这玩意咋理解,其实我也不大了解,如果有大神知道的话,能告诉小弟。
标签:
原文地址:http://www.cnblogs.com/mulog/p/5698416.html