A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安路凤 中级黑马   /  2012-5-5 13:54  /  2855 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class StaticCode
{
        int num=2;
        StaticCode()//空参构造函数 - 给对应函数初始化
        {
                System.out.println("B");
        }
        static      //静态代码块 - 给类初始化,优先于任何对象,类一加载就存在了
        {
                System.out.println("A");
        }
        {           //构造代码块 - 给所有对象初始化 优先于构造函数,对象一创建就存在
                System.out.println("c"+this.num);      //可以访问非静态
        }
        StaticCode(int x)//构造函数 - 给对应函数初始化
        {
                System.out.println("D");
        }
        public static void show()//静态成员方法
        {
                System.out.println("show run");
        }
}

public class StaticCodeDemo {

                public static void main(String[] args) {
                new StaticCode(4);  //加载StaticCode类
                               
               
        }
        }
运行结果为 :
A
c2
D
大家是不是觉得基础知识很重要呢,否则又怎么知道谁先谁后呢...
由此可以加深领悟类、对象、静态代码块、代码块在内存中存在的先后顺序

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

7 个回复

倒序浏览
替凤姐总结一下{:soso_e113:},类加载过程中,各种代码的执行顺序:
1.类加载过程中,静态代码块最先执行,而且只执行一次(静态代码块的作用是为整个类初始化)
2.构造代码块执行,可执行多次(为所有对象初始化)
3.相应参数类型的构造函数执行(如果构造函数中采用this调用了其他构造函数,会先执行被调用的构造函数)
注:静态方法也会随着类的加载而加载,但静态函数需要被类或对象调用时才会执行。(本例中未打印“show run”的原因。“加载”不同于“执行”!)
回复 使用道具 举报
赵玮_Tom 发表于 2012-5-5 14:09
替凤姐总结一下,类加载过程中,各种代码的执行顺序:
1.类加载过程中,静态代码块最先执行, ...

hia hia hia  
总结的很给力哦!!
看来我要加强总结这个技能咯!!:lol
回复 使用道具 举报
静态代码块 >   构造代码块  >    构造函数   (构造代码块运行需要new 对象才会运行)
回复 使用道具 举报
凤姐 大爱
回复 使用道具 举报
毕老师在视频6.7节中帮我们总结的

对象的初始化过程

Person p = new Person("SCH",10);
这句话做的事情如下:

①因为new用到了Person.class类文件,所以会先找到Person.class类文件并加载到内存中
②执行该类中的static代码块(如果有的话),给Person.class类进行初始化
③在堆内存中开辟空间,分配内存地址
④在堆内存中建立对象的特有属性,并对其进行默认初始化
⑤对属性进行显式初始化
⑥对对象进行构造代码块初始化
⑦对对象进行对应的构造方法初始化
⑧将③中分配好的内存地址赋值给栈内存中的引用变量p

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
应该是这样的吧
静态代码块 > 主函数 > 构造代码块 >  构造函数
(没有主函数,静态代码块一样运行,运行完后就报错)。。。
例如:
class Demo{
static{
System.out.println("haha");
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马