首页 > 其他 > 详细

局部代码块和构造代码块

时间:2015-04-18 23:32:43      阅读:383      评论:0      收藏:0      [点我收藏+]

局部代码块

 1 package com_package2;
 2 
 3 public class Person3Demo {
 4     public static void main(String[]args)
 5     {
 6         Person3 p = new Person3();
 7         p.speak();
 8         Person3 p1 = new Person3("hejinjin",23);
 9         p1.speak();
10         Person3 p2 = new Person3("hejinjin");
11         p2.speak();
12         Person3 p3 = new Person3(238);
13         p3.speak();
14         p1.show();
15         {
16             
17             int x = 10;
18         }
19         System.out.println("x="+x);
20             
21     }
22     
23 
24 }

像这种的会出现错误,int x= 10是局部代码块,所以x只在大括号之内有用,除了这个大括号,x将不再起作用,局部代码块是写在main函数里面的。

构造代码块和局部代码块不同,构造代码块是写在类里面的。

package com_package2;

public class Person4 {
    private int age;
    private String name;
    {
        System.out.println("伴随着创建对象而执行,对象创建一次执行一次");
        
        
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    Person4()
    {
        System.out.println("haha");
    }
    Person4(String name)
    {
        this.name = name;
        
    }
    Person4(String name,int age)
    {
        this.name = name;
        this.age = age;
        System.out.println("heihei");
    }
    public void speak()
    {
        
        System.out.println("name="+this.name+" "+"age"+this.age);
    }
}
package com_package2;

public class Person4Demo {
    public static void main(String[]args)
    {
        Person4 p = new Person4();
        
        Person4 p1 = new Person4("hejinjin",23);
        p1.speak();
        
    }

}

伴随着创建对象而执行,对象创建一次执行一次
haha
伴随着创建对象而执行,对象创建一次执行一次
heihei
name=hejinjin age23

注意观察结果:会发现,伴随着创建对象,这种构造代码块执行,创建一次对象就执行一次构造代码块!

构造代码块:可以给所有对象进行初始化

构造函数:是对对应的对象进行初始化。

举一个例子来说:每一个婴儿生下来都会哭,如果

写一个类:

package com_package2;

public class Person4 {
    private int age;
    private String name;
    Person4()
    {
        
        System.out.println("haha");
        cry();
        
    }
    Person4(String name,int age)
    {
        this.name = name;
        this.age = age;
        cry();
    }
    Person4(String name)
    {
        this.name = name;
        cry();
    }
    public void speak()
    {
        
        System.out.println("name="+this.name+"age="+this.age);
    }
    public void cry()
    {
        System.out.println("哇哇······");
    }
}
package com_package2;

public class Person4Demo {
    public static void main(String[]args)
    {
        Person4 p  = new Person4();
        p.speak();
        Person4 p1 = new Person4("hejinjin",34);
        p1.speak();
        Person4 p2 = new Person4("hejinjin");
        
        
    }
}

haha
哇哇······
name=nullage=0
哇哇······
name=hejinjinage=34
哇哇······

 

在这里也就是说,每次创建对象的时候都,为了让婴儿哭,那么在每个构造方法里面都要调用一次cry()函数,这样岂不是非常麻烦,所以构造代码块将改变这种现状


package com_package2;

public class Person4 {
    private int age;
    private String name;
    {
    System.out.println("哇哇······");
    }
    Person4()
    {
        
        System.out.println("haha");
        //cry();
        
    }
    Person4(String name,int age)
    {
        this.name = name;
        this.age = age;
        //cry();
    }
    Person4(String name)
    {
        this.name = name;
        //cry();
    }
    public void speak()
    {
        
        System.out.println("name="+this.name+"age="+this.age);
    }
    //public void cry()
    //{
        
    //}
}
package com_package2;

public class Person4Demo {
    public static void main(String[]args)
    {
        Person4 p  = new Person4();
        p.speak();
        Person4 p1 = new Person4("hejinjin",34);
        p1.speak();
        Person4 p2 = new Person4("hejinjin");
        
        
    }
}

哇哇······
haha
name=nullage=0
哇哇······
name=hejinjinage=34
哇哇······


结果是一样的,构造代码块的作用也就在这里。但是构造代码块一定记得加大括号

 

 

局部代码块和构造代码块

原文:http://www.cnblogs.com/mmlovejj/p/4438180.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!