锁定老帖子 主题:JAVA6可以使用字符串累加
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-13
最后修改:2011-05-13
Crusader 写道
skzr.org 写道
qianhd 写道
不要写任何依赖语法糖 依赖编译器的代码
久而久之 你就总会以为有虚拟机给你优化 这是不好的习惯
Crusader 写道
这个讨论意义不大
代码不应该依赖于jdk版本或者JVM实现 否则可移植性太差了
如果只是为了易读性,个人认为得不尝失 而且并不一定是为了向前兼容,也可能是平行,向后,谁也能保证JVM(不同厂商,不同版本)会不会优化,如何优化 如果觉得使用StringBuilder来进行累加不麻烦,其实也可以,虽然易读性差点。就怕人偷懒写成这样就悲剧了。new StringBuilder("select * from ").append(tableName).append(" where id in ("+userIdString+")");这样让编译器情何以堪! |
|
返回顶楼 | |
发表时间:2011-05-13
解释的真详细,thx
|
|
返回顶楼 | |
发表时间:2011-05-13
fantasy 写道
String s="aa"+"bb"+"cc";
这个干嘛不直接写成
|
|
返回顶楼 | |
发表时间:2011-05-13
最后修改:2011-05-13
miaofm 写道 fantasy 写道 String s="aa"+"bb"+"cc";
这个干嘛不直接写成 String s="aabbcc"; 因为实际的状况可能是: String message = "Crusader 写道\n" + "这个讨论意义不大\n" + "代码不应该依赖于jdk版本或者JVM实现\n" + "否则可移植性太差了"; |
|
返回顶楼 | |
发表时间:2011-05-13
jdk 一直都有这个功能,不要把编译器想得那么笨,
这个应该是编译器文档里面承诺了会这样做的,所以不会担心编译器依赖问题。 |
|
返回顶楼 | |
发表时间:2011-05-13
最后修改:2011-05-13
看了这篇文章,忽然想试试另外的编译器优化:
final String a = "aa"; final String b = "bb"; final String h = a + b; System.out.println(h); System.out.println(h + "cc"); 编译后是什么样子? 0 ldc [16] 2 astore_1 [a] 3 ldc [18] 5 astore_2 [b] 6 ldc [20] 8 astore_3 [h] 9 getstatic java.lang.System.out : java.io.PrintStream [22] 12 ldc [20] 14 invokevirtual java.io.PrintStream.println(java.lang.String) : void [28] 17 getstatic java.lang.System.out : java.io.PrintStream [22] 20 ldc [34] 22 invokevirtual java.io.PrintStream.println(java.lang.String) : void [28] 相当于: final String a = "aa"; final String b = "bb"; final String h = "aabb"; System.out.println("aabb"); System.out.println("aabbcc"); 所有,要尽量使用常量。 PS: java编译器到现在还不支持尾递归,强烈BS之…… |
|
返回顶楼 | |
发表时间:2011-05-14
不要光看这些优化的,你亲自写个循环20万的试试,立竿见影.
花时间研究理论如果一辈子用不上的话,不如亲自上手试试,你还能记住一辈子 |
|
返回顶楼 | |
发表时间:2011-05-15
有人会这么写吗? "aa" + "bb"
直接“aabb” 不好吗 |
|
返回顶楼 | |
发表时间:2011-05-15
有意思吗码农们?
|
|
返回顶楼 | |
发表时间:2011-05-15
最后修改:2011-05-15
xly_971223 写道 有人会这么写吗? "aa" + "bb"
直接“aabb” 不好吗 当拼接复杂SQL语句的时候会。 当拼接日志的时候会。 这样做主要是让代码更加易读,如果直接写在同一行里,超过一定的数量,java编辑器出现横向滚动条。 那么当你看代码的时候既要竖向托滚动条,又要横向拖动滚动条。 如: String sql = "select ... from user" +" left out join userGroup ....." +" left out join B ....." +" where ..." +" order by user_name,.. desc"; |
|
返回顶楼 | |