黑马程序员技术交流社区
标题:
构造代码块
[打印本页]
作者:
xiaoya0o0o
时间:
2015-9-17 21:52
标题:
构造代码块
.类的初始化过程:
加载class文件
堆中开辟空间
变量的默认初始化
变量的显示初始化
构造代码块初始化
构造方法初始化
成员变量-->构造代码块-->构造方法
class Student
{
static int[] array;
public Student(){
array = new int[10];
System.out.println("构造方法");
}
{
System.out.println("构造代码块");
}
static{
array = new int[10];
System.out.println("静态代码块");
}
}
class Demo
{
public static void main(String[] args)
{
Student stu = new Student();
System.out.println("-----------------------");
Student stu1 = new Student();
}
}
复制代码
作者:
xiaoya0o0o
时间:
2015-9-17 21:53
/*
代码块:
1.被括在一对大括号之间的一块代码;
2.代码块的分类:
1).局部代码块:
在某个方法中,或者某个代码块中;
执行:顺序执行;
作用:限制变量的声明周期;
main(){
{
int n = 10;//如果这个非常占用内存
System.out.println("n = " + n);//模拟使用变量
}
//代码到这里,就释放了n的内存;
}
2).构造代码块:
定义在"类体中";
执行:每次实例化这个类的对象时,都会被执行一次;
作用:一般也是用于类的初始化操作,跟"构造方法"的作用一样,区别:构造代码块不能带参数;
注意:如果跟构造方法同时存在,先执行"构造代码块";
3).静态代码块:
定义在"类体中";使用static修饰的一个代码块;
执行:第一次使用这个类时,会被执行一次;之后就不再被执行;
作用:用于初始化"静态成员";它可以访问成员变量,但仍然只能访问静态成员变量;
注意:执行顺序:静态代码块-->构造代码块-->构造方法
*/
class Student
{
String name;
static int i;
//构造代码块
{
System.out.println("Student的构造代码块2......");
}
{
System.out.println("Student的构造代码块1......");
}
//构造方法
Student(){
System.out.println("Student的无参构造方法!");
}
//静态代码块
static{
System.out.println("静态代码块2...... i = " + i++);
}
static{
System.out.println("静态代码块1...... i = " + i);
}
}
class Demo
{
public static void main(String[] args)
{
Student stu1 = new Student();
Student stu2 = new Student();
Student stu3 = new Student();
}
}
复制代码
作者:
wangganghua
时间:
2015-9-17 22:10
真是不错哦
作者:
an3077458
时间:
2015-9-17 22:13
.。。。。我明白了
作者:
往事如风555
时间:
2015-9-17 22:13
这个挺难的,搞不太懂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2