构造代码块
来源:互联网 发布:淘宝车牌选号 编辑:程序博客网 时间:2024/05/16 19:13
package test1;class person_3 {private int age;private String name;person_3() {System.out.println("age:" + age + " name: " + name);}person_3(int i) {age = i;System.out.println("age:" + age + " name: " + name);}person_3(int i, String s) {age = i;name = s;System.out.println("age: " + age + " name: " + name);}{cry();}public void cry() {System.out.println("孩子哭了!");}}public class shiyan {public static void main(String[] args) {person_3 p1 = new person_3();person_3 p2 = new person_3(15);person_3 p3 = new person_3(12, "zhangsan");}}上述代码中展示的是构造函数的方式,但是同时在代码中存在一个笔试时常见的问题,就是方法体中的
{ cry(); }在这段代码中没有任何的提示,不像方法有方法名,但是在执行的结果中我们可以看到孩子哭了! age:0 name: null 孩子哭了! age:15 name: null 孩子哭了! age: 12 name: zhangsan他确实执行了代码中的cry()方法。那么这是什么呢?答案是:构造代码块。这个概念在实际的应用中并不常见,但是在笔试中却很多,问题的方式有:让你说一下程序中的代码运行的顺序、让你说出该段代码的作用。
这说这个之前我,我们首先要搞明白一点就是什么是构造函数。在我们建立对象时,与之对应的构造函数就会被调用,注意是“与之对应的构造函数”,这有牵扯到一个问题,就是构造函数有几种?在我们的类中,如果我们没有为类建立构造函数,那么系统会自己创建一个空的构造函数,但是如果我们自己创建的有的话,不管合适不合适,系统都不在为我们创建构造函数了,例如在函数中我们创建了如下的构造函数package test1;public class shiyan{ private int age; shiyan(int i){ age = i; System.out.println("name"+age); } public static void main(String[] args){ Person p = new Person(); } }在类中我们创建了Person(int i)这个构造函数,则系统默认不会给我们创造了,在执行语句的时候会出现如下错误:Person.java:8: 找不到符号 符号: 构造函数 Person() 位置: 类 Person Person p = new Person(); ^ 1 错误因为我们在执行到Person p = new Person()时,并没有找到构造函数的存在;
说了这么多,有人会问构造函数到底有什么用呢?其实构造函数就是用于给对象进行初始化的,每个类在对象建立的同时,构造函数就在运行了,目的是给对象进行初始化。那么我们应该在什么时候定义构造函数,什么时候使用默认的呢?当我们在对事物进行分析时,如果发现事物存在具备一些特性或者行为时,那么我们就可以定义构造函数了,并把这些内容定义在构造函数中。
现在回到开始的那个问题,构造代码块有什么用?它的作用其实很简单,和构造函数一样,也是为对象进行初始化用的,共同点是在对象一建立的时候他们都在运行,但是他们的区别在于:构造代码块要优先于构造函数执行,同时,构造代码块是给所有对象进行统一的初始化,而构造函数则是给对应的对象进行初始化,就像在首段代码中,我们在进行Person p1 = new Person(15);的时候,会运行Person(int i){、、、、、}这个构造函数,在在进行person_2 p3 = new person_2(12, "zhangsan");这个的时候,则系统会运行person_2(int i, String s) {、、、、}这个构造函数,也就是所谓的“给对应的对象进行初始化",然而,不管是运行哪段代码,构造数码块是必须首先运行的,即"构造代码块是给所有对象进行统一的初始化“
- 构造块/静态代码块
- 构造函数、构造代码块
- 构造函数、构造代码块
- 构造函数、构造代码块
- 构造代码块
- 构造代码块
- 构造代码块
- 构造代码块
- 构造代码块、equals
- 构造代码块
- java构造代码块
- 构造代码块
- java-构造代码块
- 构造代码块
- 构造代码块笔记
- 构造代码块
- java构造代码块
- 普通代码块 静态块 构造块
- SQL Server 同步复制中的MSSQL_REPL-2147201001問題處理
- LightSwitch OOB发布模式下 Title的处理
- 合并SQL脚本文件
- 提速 Firefox和IE提速必备技巧
- 还原某一个目录下的所有数据库备份文件
- 构造代码块
- android 权限说明
- 什么是递归
- BitBlt介绍
- my lovely musi link
- iPhone开发资料汇总
- redhat增加服务
- 一首歌 一种心情 一段故事
- 通过DataSet 操作xml