锁定老帖子 主题:代码难道不是这么写的?
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-29
fengchong719 写道 你要知道String s = new String('1111');是生成了两个对象。
下面用你的那个for来说,假设len = 5; for(int i=0;i<array.len;i++){ String s = array[i];//你在这里生成了5个对象,开辟一段内存 } 评审官的方法 String s = null;//此次生成一个对象,开辟一段内存 for(int i=0;i<array.len;i++){ s = array[i];//他这里一个都没有成功 } 不过其它对于这个for还是没有什么大问题,如果是java的话,它的垃圾回收机制,会在你每完成一次for语句块的时候,就把s销毁了。 这个就是学了半吊子的悲剧啊 String s = array[i];//你在这里生成了5个对象,开辟一段内存 你的java老师应该表示鸭梨很大。 String s = array[i];// 这里一个对象都没有生成,只是改变引用地址 String s = new String();//这里生成一个对象 String s = new String("aaaa");//这里生成两个对象 至于为啥,回去好好学习基础吧。自己没搞清楚也就罢了,还出来误导人,中国式的杯具!!! |
|
返回顶楼 | |
发表时间:2010-07-29
djsl6071 写道 XTU_xiaoxin 写道 ysongcn 写道 没有new,跟堆没有关系。
另外,楼主的代码是 array 不是 List。大牛们在讨论什么重复调用啊,迷糊死了。arr.length 本身就是个int型的数,又不是方法调用。 另外,字节码威武。 提醒楼主,按回帖内容来看,本楼很多朋友都比较像你的评审员,你小心了。 看了大家的回帖以及提供的字节码,我大致明白是怎么回事了,看来javaeye上高手如云啊 看了大家的答复,javaeye上其实菜鸟无数... arr.length不是方法调用吗?跟java中的其它变量比,也许不是吧,但跟c比起来,耗时上就不好说了,能一次使用局部变量,还是用的好。 你确定不是在说size()吗? |
|
返回顶楼 | |
发表时间:2010-07-29
隐藏吧,这帖子,没意义。你不懂java你就承认,死要面子非要扯淡误导别人,何必呢?我建议大家来投隐藏,免的一些人的扯淡误导别人。
|
|
返回顶楼 | |
发表时间:2010-07-29
dennis_zane 写道 隐藏吧,这帖子,没意义。你不懂java你就承认,死要面子非要扯淡误导别人,何必呢?我建议大家来投隐藏,免的一些人的扯淡误导别人。
这个提议是不错,不过要可怜楼主被扣分,而且下次发帖还要填啥“论坛须知”,那个很杯具 |
|
返回顶楼 | |
发表时间:2010-07-29
linliangyi2007 写道 dennis_zane 写道 隐藏吧,这帖子,没意义。你不懂java你就承认,死要面子非要扯淡误导别人,何必呢?我建议大家来投隐藏,免的一些人的扯淡误导别人。
这个提议是不错,不过要可怜楼主被扣分,而且下次发帖还要填啥“论坛须知”,那个很杯具 应该给以讹传讹的人扣分,关楼主什么是啊! |
|
返回顶楼 | |
发表时间:2010-07-29
其实重点是在垃圾回收这里
|
|
返回顶楼 | |
发表时间:2010-07-29
linliangyi2007 写道 ywgoal 写道 都闲得蛋痛!!中国牛人多,怎么看牛的程序,软件,计算机都是人家老外牛啊~~~
你的评价太崇洋了,没有依据啊。你没看到QQ比MSN牛,华为在很多技术上已经赶超思科!! 像你这种啥都不想最求精致的人,才是导致中国软件落后的罪魁。 鸭梨很大啊,所以cisco现在四处收购其他业务。 |
|
返回顶楼 | |
发表时间:2010-07-29
wyb222 写道 哥看这么多人要隐藏,哥投良好了
哥来晚了..... |
|
返回顶楼 | |
发表时间:2010-07-29
抛出异常的爱 写道 wyb222 写道 哥看这么多人要隐藏,哥投良好了
哥来晚了..... 专程来膜拜异常哥 |
|
返回顶楼 | |
发表时间:2010-07-29
iamlotus 写道 IrenBJ 写道 1.有人说将数组长度在循环外先计算,如果要计较这一点点内存的话,实际上在编译成class文件的时候都只是计算一次,编译后都是数字了,放在循环外计算长度岂不多加了一个临时变量?
2.用for each的方式循环数组只是对适用于只读数组的操作,对于需要修改数组值的话建议还是用原始的for循环,即LZ所使用的方式。 以上是我的个人意见,综上所述,LZ的代码已经接近完美了。 想当然了吧,javac只会把final static的常量替换,这个length是不会替换的。看看bytecode就明白了。 bytecode也不是“真”的。JVM的JIT会做进一步优化(本地代码优化到什么效率,这要看机器码了) |
|
返回顶楼 | |