二十岁,五十七级,唐三无疑已经大幅度超越了武魂殿的黄金一代。最重要的是,现在的他已经不再是拥有各种技能,需要去控制的唐三,而是将所有能力融为一炉,踏出了成为强者最关键一步的唐三。

那就是利用忍界各种强大秘术的能力,让自己和布玛长生不老,就算不能长生不老也希望能活得很长,尤其是在死亡之前一直能保持青春。

用电脑在家做兼职赚钱

“不不不,我们当年来到地球,其实只是为了寻找一样东西,只是这么多年过去了,却始终没有找到,我们也死心了,所以这次只要能救出那些同道,我们就会返回域外世界,绝不会在地球滥杀无辜的。更何况我在这里生活了这么久,还是有些感情的,怎么会忍心看着地球被破坏呢?”妖冶男子道。
在元始天尊想来如果混沌钟在他手里的话一定能吊打巫族的,结果却落在太一这个妖族手里他能心情好才怪,没错,这就是元始天尊,明明太一没有半点得罪招惹他的地方但是元始天尊就这么恨上太一了。

唐昊就站在他旁边,看上去,眼底多了一分疲惫,但他的背依旧挺得笔直,这可能是唐昊唯一不显得老的地方了。

看起来很懵的java内存加载面试题


源代码如下,求结果

public class MemoryAnalyse {
    public static int k = 0;
    public static MemoryAnalyse t1 = new MemoryAnalyse("t1");
    public static MemoryAnalyse t2 = new MemoryAnalyse("t2");
    public static int i = print("i");
    public static int j = print("j");
    public static int n = 99;
    
    {
        print("constructor code");
    }
    
    static {
        print("static code");
    }

    public static int print(String s) {
        System.out.println("i=" + i + "   " + s + "  k=" + k + "  n=" + n
                + "   j=" + j);
        ++i;
        ++k;
        ++n;
        return i;
    }

    public MemoryAnalyse(String string) {
        print(string);
    }

    public static void main(String[] args) throws ClassNotFoundException {
        MemoryAnalyse d = new MemoryAnalyse("T");
    }
}

源码下载

然而结果是这个

i=0   constructor code  k=0  n=0   j=0
i=1   t1  k=1  n=1   j=0
i=2   constructor code  k=2  n=2   j=0
i=3   t2  k=3  n=3   j=0
i=4   i  k=4  n=4   j=0
i=5   j  k=5  n=5   j=0
i=6   static code  k=6  n=99   j=6
i=7   constructor code  k=7  n=100   j=6
i=8   T  k=8  n=101   j=6

有没有很惊讶,结果竟然这么复杂.好,下面我们分析一下,在分析之前,先普及下不怎么用的基础知识

代码块和静态代码块何时运行问题:

  代码块在创建对象时运行
  静态代码块在类加载时运行

大家都知道static是属于类的并非对象,也就是说static修饰的东西都会在class加载到方法区时就存在在那里.所以方法区中类加载时内存过程如下

1.当类刚加载时会全部加载到方法区时,此时所有变量全部未实例化.

2.实例化参数t1

此时因为代码块在创建对象时执行,且在构造函数之前执行,所以先执行代码块

{
print("constructor code");
}

  因为此时所有的变量都为默认值,所以执行后打印结果为

i=0   constructor code  k=0  n=0   j=0

此时i,n,k的值都已经自加一,值为1

然后实例化调用构造函数

public MemoryAnalyse(String string) {   //这里string为t1
        print(string);
}

  构造函数调用结果如下

  i=1   t1  k=1  n=1   j=0
  此时i,n,k的值都已经自加一,值为2

3.实例化参数t2

和第一步一样在构造函数之前执行代码块

{
print("constructor code");
}

i=2   constructor code  k=2  n=2   j=0

此时i,n,k的值都已经自加一,值为3

然后实例化调用构造函数

public MemoryAnalyse(String string) {   //这里string为t2
        print(string);
}

  构造函数调用结果如下

 

i=3   t2  k=3  n=3   j=0

此时i,n,k的值都已经自加一,值为4

4.初始化参数i

  这里直接调用print("i")函数,得到结果为

  i=4   i  k=4  n=4   j=0

  此时i,k,j值为5,注意i的值不是通过自加一变成5的,而是通过函数的返回值赋给i的

  5.初始化参数j

  

  这里和上一步一样,执行print("j"),然后把函数的返回值赋给j,打印结果为

  i=5   j  k=5  n=5   j=0

  此时j的值已经为6

到这里类加载的内部参数变化就完成了,我们可以用加载类的方式调用一下

    public static void main(String[] args) throws ClassNotFoundException {
        //MemoryAnalyse d = new MemoryAnalyse("T");
        Class.forName("MemoryAnalyse");
    }

Class.forName(类名字符串)是手动加载类到方法区,得到结果为

i=0   constructor code  k=0  n=0   j=0
i=1   t1  k=1  n=1   j=0
i=2   constructor code  k=2  n=2   j=0
i=3   t2  k=3  n=3   j=0
i=4   i  k=4  n=4   j=0
i=5   j  k=5  n=5   j=0
i=6   static code  k=6  n=99   j=6  //这行的出现是因为static代码段在类加载时执行.n=99是因为类加载了,n的初值为99把之前的值覆盖掉了

然后改为我们之前的demo

public static void main(String[] args) throws ClassNotFoundException {
        MemoryAnalyse d = new MemoryAnalyse("T");
        //Class.forName("MemoryAnalyse");
    }

执行结果为

i=0   constructor code  k=0  n=0   j=0
i=1   t1  k=1  n=1   j=0
i=2   constructor code  k=2  n=2   j=0
i=3   t2  k=3  n=3   j=0
i=4   i  k=4  n=4   j=0
i=5   j  k=5  n=5   j=0
i=6   static code  k=6  n=99   j=6
i=7   constructor code  k=7  n=100   j=6    //代码块执行
i=8   T  k=8  n=101   j=6     //构造函数执行

最后两行的出现就很简单了,一个是代码块的,一个是构造函数的

这么一分析是不是简单了很多

当前文章:http://hnhdqp.com/10678.html

发布时间:2018-10-17 11:02:06

网页游戏平台赚钱吗 用手机兼职的工作 赚钱最快的平台 有什么赚钱的游戏 诚聘网络兼职 可以赚钱的微信游戏 网上赚钱方法大全qq 蚂蚁团队网赚靠谱不

编辑:伯马宗

相关新闻

互联网大数据带来全新商业变革

2018-10-17 07:07:16

海拉尔彩普附广告传媒有限公司

横山北街派出所速破系列撬盗机动车车牌案

2018-10-17 01:23:05

山南倨巴簇电子科技有限公司

阿富汗发现佛寺内藏大量文物 已有2600年历史

2018-10-17 12:10:20

巴中退寡广告传媒有限公司

爱活动首次亮相2015全球移动互联网大会

2018-10-17 14:50:04

宿迁丛吻经贸有限公司

热门推荐

  • 《勇者大冒险》漫画173:武力打穿通路 可爱“小猫”发威
  • 揭秘公务员考试阅卷现场:原来考分是这样出炉的
  • 3198元:vivo X20星耀红圣诞限量版正式开售
  • 3000个核心!最便宜的多核超级电脑:用750张树莓派构成
  • 全新福克斯谍照曝光 有望2018年初亮相
  • 支付宝推信用就医:看病不用排队
  • 六安城区这6个停车场1340个停车位已见雏形,在你家附近的吗?
  • 家装吊顶木龙骨和轻钢龙骨怎么选?看完就懂
  • 连续强降雨致贵州逾80万人受灾 9人罹难2人失踪
  • 深圳自然人进入代开发票“微时代”
  • 河北新闻网版权所有 本站点信息未经允许不得复制或镜像 法律顾问:如果在家网赚 微信挣钱平台
  • 目前最赚钱的行业排名 copyright ? 2000 - 2016
  • 新闻热线:0311-67563366 广告热线:0311-67562966 新闻投诉:0311-67562994
  • 冀ICP备 09047539号-1 | 互联网新闻信息服务许可证编号:1312006002
  • 广播电视节目制作经营许可证(冀)字第101号|信息网络传播视听节目许可证0311618号
  • 利用微信赚钱的5种 日赚 手动搬砖赚钱游戏 时时彩一天赚200元方法