大二狗开通博客的第一天

刚开始学习java,想把学习中遇到的问题和一些小的想法放上来,激励自己学习!目前只有一个小小的实验可以放上来~就是下面这个啦

做了一个关于String的小实验

实验目的:了解String  a = "wenqiao";和String a  = new String("wenqiao"); 的区别。

实验猜想:第一种方法字符串“wenqiao”存储在常量池中,且不论按上述方法定义多少次,常量池中只有一个"wenqiao"字符串

                    第二种方法字符串存储在堆中,且每个"wenqiao"都是不同的对象

实验结果: 




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

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

情况一:


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

情况二:


情况三:


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

情况一:for(inti=0;i<1000000000;i++){

                     String a1 ="wenqiao";

                }

               for(inti=0;i<1000000000;i++){

                    String a2 =new String("wenqiao");

              }

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

 

情况二:for(longi=0;i<1000000000;i++){

            String a1 ="wenqiao";

       }

        for(inti=0;i<1000000000;i++){

            String a2 =new String("wenqiao");

       }

 

情况三:for(longi=0;i<1000000000;i++){

            String a1 ="wenqiao";

       }

        for(longi=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型数据的计算更为复杂,所以用时更久,暂时没有更深的研究


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值