资讯专栏INFORMATION COLUMN

大二狗第二次写博客

FingerLiu / 2544人阅读

摘要:为了搞清楚和的区别做了小实验实验猜想第一种方法字符串存储在常量池中,且常量池中只会有一个第二种方法字符串存放在堆中且每个都是不一样的对象实验结果第二种方法速度明显慢于第一种,当运行次数达到一定次数后,堆内存溢出,符合实验期望。

为了搞清楚String a = "wenqiao"; 和 String a = new String("wenqiao");的区别
做了小实验
实验猜想:第一种方法 字符串存储在常量池中,且常量池中只会有一个"wenqiao";第二种方法 字符串存放在堆中 且每个"wenqiao"都是不一样的对象
实验结果:


第二种方法速度明显慢于第一种,当运行次数达到一定次数后,堆内存溢出,符合实验期望。

但是..温乔一开始实验时结果并不是这样…而是

情况一:

时间明显较短,甚至还有这样的情况

情况二:

情况三:

出现这些情况的表面原因:
情况一:

    for(int i=0;i<1000000000;i++){
            String a1 = "wenqiao";
    }
    for(int i=0;i<1000000000;i++){
            String a2 = new String("wenqiao");
    }
    

最上面截图的代码中,在for循环外定义了很长的字符串数组用于存放每个字符串,而这三个都是for循环内部定义了局部变量。原因猜想: ①不明白为什么时间明显缩短??希望有大神指导 ②堆内存没有溢出:局部变量a1被存放在栈中,每次循环结束后,该引用生命到期,对应在堆内的字符串成为垃圾被回收

情况二:

    for(long i=0;i<1000000000;i++){
            String a1 = "wenqiao";
    }
    for(int i=0;i<1000000000;i++){
            String a2 = new String("wenqiao");
    }

情况三:

    for(long i=0;i<1000000000;i++){
            String a1 = "wenqiao";
    }
    for(long i=0;i<1000000000;i++){
            String a2 = new String("wenqiao");
    }
    

这两种情况显示:当i为long型基本变量时,代码执行时间比int要久很多
原因猜想:
对long型变量进行操作时耗时比int久
实验:
代码:

    long i;
    for(i = 0 ;i < 1000000000;i++){
        
    }
    int j;
    for(j = 0 ;j < 1000000000;j++){
        
    }

结果

猜想:是因为long型数据大小为8bytes,而int为4bytes,其操作时对long型数据的计算更为复杂,所以用时更久,目前没有更深的学习和了解!

欢迎各位大神评价和指导!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66871.html

相关文章

  • 我的WEB前端辛酸史

    摘要:在给老师做项目的这个期间,我也发现慕课网,然后便贪婪的在上面学习,其实现在看看上面的教学也是一些基础,想要真的学到很多,必须做实际项目,遇到问题,然后去百度或者谷歌这个问题,看别人的博客中怎么教你解决。 前言:想当初我也是个无知骚年,学完学校的C语言基础课程之后也就再也没有什么想法了(期间还看了看JAVA,但是发现并不能够学好,索性就放弃了),由于当时期末C语言程序答辩的时候,我自己仿...

    davidac 评论0 收藏0
  • 我的WEB前端辛酸史

    摘要:在给老师做项目的这个期间,我也发现慕课网,然后便贪婪的在上面学习,其实现在看看上面的教学也是一些基础,想要真的学到很多,必须做实际项目,遇到问题,然后去百度或者谷歌这个问题,看别人的博客中怎么教你解决。 前言:想当初我也是个无知骚年,学完学校的C语言基础课程之后也就再也没有什么想法了(期间还看了看JAVA,但是发现并不能够学好,索性就放弃了),由于当时期末C语言程序答辩的时候,我自己仿...

    jaysun 评论0 收藏0
  • 我的WEB前端辛酸史

    摘要:在给老师做项目的这个期间,我也发现慕课网,然后便贪婪的在上面学习,其实现在看看上面的教学也是一些基础,想要真的学到很多,必须做实际项目,遇到问题,然后去百度或者谷歌这个问题,看别人的博客中怎么教你解决。 前言:想当初我也是个无知骚年,学完学校的C语言基础课程之后也就再也没有什么想法了(期间还看了看JAVA,但是发现并不能够学好,索性就放弃了),由于当时期末C语言程序答辩的时候,我自己仿...

    Darkgel 评论0 收藏0
  • 渣渣为什么要看 ElasticSearch 源码?

    摘要:当时自己在本地测试搭建集群后,给分配了另外一个任务就是去了解中的自带分词英文分词中文分词的相同与差异以及自己建立分词需要注意的点。还有就是官网的文档了,非常非常详细,还有,版本的是有中文的官方文档,可以凑合着看。 前提 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中。大数据技术业已集中在如何存储和处理这...

    Cciradih 评论0 收藏0

发表评论

0条评论

FingerLiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<