您的位置:首页 > 职场人生

黑马程序员_005_构造代码块、构造函数和静态代码块

2013-12-23 15:39 288 查看
------- android培训java培训、期待与您交流! ----------
1、构造代码块
作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。

和构造函数区别:构造代码块是给所有对象进行统一初始化,而构造函数时给对应的对象初始化。

构造代码块中定义的是不同对象共性的初始化内容。

class Person

{
private String name;

private int age;

Person()//定义一个构造函数
{
System.out.println("person run");
}

Person(String a)//定义一个构造函数
{
name = a

System.out.println("person run"+name);
}

{
System.out.println("我是构造代码块,我最先执行");

}

}

class PersonDemo

{
public static void main(String[] args)
{
Person p = new Person();//先我是构造代码块,我最先执行,后其他
Person p1 = new Person("xiaoming”);//先我是构造代码块,我最先执行,后其他
}
}

2、构造函数
特点:

函数名与类名相同

不用定义返回值类型

不可以写return语句

作用:给对象进行初始化。(对象一建立就会调用与之对应的构造函数)

注意:

默认构造函数的特点

多个构造函数是以重载的形式存在的

当一个类中没有定义构造函数时,那么系统会默认给该类加入一个控参数的构造函数,类名(){}。当类中定义了构造函数时,系统就不会加入默认构造函数。

构造函数是在对象一建立时运行,给对象初始化。而一般方法是对象调用才执行,是给对象添加对象具备的功能。一个对象建立构造函数只运行一次,而一般方法可以被该对象调用多次。什么时候定义构造函数?当分析事物时,该事物存在具备一些特性或者行为,那么僵这些内容定义在构造函数中。构造函数的参数根据需要而定。

class Person

{
private String name;

private int age;

Person()//定义一个构造函数
{
System.out.println("person run");
}

Person(String a)//定义一个构造函数
{
name = a

System.out.println("person run"+name);
}

}

class PersonDemo

{
public static void main(String[] args)
{
Person p = new Person();
Person p1 = new Person("xiaoming”);

}
}

3、静态代码块
格式:

static

{
静态代码块中的执行语句。

}

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

class StaticCode

{
static
{
System.out.println("a");

}

}

class StaticCodeDemo

{
static
{
System.out.println("b");

}
public static void main(String[] args)

{
new StaticCode();

new StaticCode();
System.out.println("d");
}

static
{
System.out.println("c");

}

}

结果:b c a d

注意:Person p = new Person("zhangsan",20);
内存执行过程:

因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中。
执行该类中的static代码块,如果有的话,给Person.class类进行初始化

在堆内存中开辟空间,分配内存地址

在对内存中建立对象的特有属性,并进行默认初始化

对属性进行显示初始化(属性有初始值时,将初始值赋给属性)

对对象进行构造代码块初始化

对对象进行对应懂得构造函数的初始化

将内存地址赋给栈内存中的变量

总结:
构造函数给特定对象进行一次初始化
构造代码块给多个对象进行初始化

静态代码块给类进行一次初始化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐