码迷,mamicode.com
首页 > 其他好文 > 详细

静态、构造、局部代码块 构造方法

时间:2016-05-01 06:26:16      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:


总结
一、静态代码块(最大优先级)
  • 静态代码块随着【类】的加载而执行,且只执行一次(至于类什么时候加载,这是一个高深的问题)
  • 静态代码块的作用:给【类】,而非对象,进行初始化
  • 在Java工程的入口类中,静态代码块优先于 public static void main(String[] args)  函数执行
二、构造代码块与构造函数:
  • 构造代码块是和构造函数同级的用 { } 包起来的一个代码块
  • 构造函数每执行一次(即new一个对象),构造代码块就运行一次
  • 构造代码块总是优先于构造函数而执行,有多个构造代码块时,相互之间是按代码块的位置顺序先后执行的
  • 构造函数是给对象进行针对性的初始化(有参或无参)的,而构造代码块是给所有对象进行通用初始化(无参)的
  • 个人觉得不建议使用构造代码块,如果有需要,完全可以用构造函数去实现相应逻辑,这样结构更清晰
三、局部代码块:
  • 作用:控制变量的生命周期,基本没啥用
  • 在程序中,若当我们已经使用完 x 并且在接下来的代码中不会再用到x,那么就没必要再让 x 在内存中占用空间了,这种情况下,可以将 x 及其所涉及到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。
  • 注意:在局部代码块中定义的变量在后面不能再使用,但若是在局部代码块前面定义的变量,在局部代码块zhon

测试代码
技术分享
public class Test {
    static {
        System.out.println("Test中的静态代码块");//1
    }
    public static void main(String[] args) {
        {
            int x = 5;//此变量仅在局部代码块内部可用
            System.out.println("Test中的局部代码块");//2
        }
        System.out.println("**************************");
        System.out.println(Person.country);//4。没有创建对象,只会加载Person中的静态代码块
        Person.show();//静态代码块仅加载一次
        System.out.println("**************************");
        new Person().speak();//创建了对象,会先调用构造代码块
        System.out.println("**************************");
        System.err.println(new Person("我是旺财").name);//每次创建对象都会调用构造代码块
    }
}
//*************************************************************************************
class Person {
    public static String country = "Person的静态成员变量";
    public String name;
    public int age;
    public void cry() {
        System.out.println("构造代码块1中调用的方法");
    }
    public void speak() {
        System.out.println("Person的普通方法");
    }
    public static void show() {
        System.out.println("这是一个静态方法");
    }
    //构造代码块:给所有对象进行初始化,每产生一个对象就运行一次。这个不是很建议使用,因为可能会忽视它的存在。
    {
        System.out.println("Person的构造代码块1");
        cry();
        age = 0;
    }
    //构造函数:给对象进行针对性的初始化
    public Person() {
        this("我是白乾涛");
    }
    public Person(String name) {
        this.name = name;
    }
    //构造代码块会根据位置按顺序执行
    {
        System.out.println("Person的构造代码块2");
    }
    //静态代码块:随着类的加载而执行,无论放在哪,都优先执行,而且只执行一次。
    static {
        System.out.println("Person的静态代码块");//3
    }
}  





静态、构造、局部代码块 构造方法

标签:

原文地址:http://www.cnblogs.com/baiqiantao/p/5449943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!