该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-31
最后修改:2010-12-31
mercyblitz 写道 gdpglc 写道 贴子写的是我的经验。不是技术的词,别在这里发。你可以直接投隐藏。我能理解你的行为。
。。。 大多数都是题外话,择善而从! 无语了,好帖子我会投良好以上地,但是我一般不投隐藏和新手,打击你继续写的动力。 我看过很多年轻人知道一点技术就觉得怎么样,工作经验不能说明问题。别人5年好,10年好,比的不是细节。 往往别人投贴子,总要想想自己的原因,别老说别人怎么样。 如果要聊正题的话,哪几种设置去测试一下,再看看效果! 没有任何人说你的方案不好,只是别人不习惯这么干! 你这么说我也不好说什么。不过,我的本意只是想把这6行代码说明白。有些问题,是靠思考的。测试可以得到一个结果,不同的理解却有不同的结论... 这里有一个权衡的问题... 可是很多人,只看表面...我只是想把这个意思表达出来... |
|
返回顶楼 | |
发表时间:2010-12-31
gdpglc 写道 mercyblitz 写道 gdpglc 写道 贴子写的是我的经验。不是技术的词,别在这里发。你可以直接投隐藏。我能理解你的行为。
。。。 大多数都是题外话,择善而从! 无语了,好帖子我会投良好以上地,但是我一般不投隐藏和新手,打击你继续写的动力。 我看过很多年轻人知道一点技术就觉得怎么样,工作经验不能说明问题。别人5年好,10年好,比的不是细节。 往往别人投贴子,总要想想自己的原因,别老说别人怎么样。 如果要聊正题的话,哪几种设置去测试一下,再看看效果! 没有任何人说你的方案不好,只是别人不习惯这么干! 你这么说我也不好说什么。不过,我的本意只是想把这6行代码说明白。有些问题,是靠思考的。测试可以得到一个结果,不同的理解却有不同的结论... 这里有一个权衡的问题... 可是很多人,只看表面...我只是想把这个意思表达出来... 这个没有办法,精益求精本来就不是必需的,所以失望再所难免! 建议大家不要再投隐藏啦,技术帖子还是做技术,别人身攻击或者谈政治,呵呵! |
|
返回顶楼 | |
发表时间:2010-12-31
哈哈,大家还是投吧,不过我并没投降。这话又要挨砖了,不过这贴,我不打算再发言了。
谢谢楼上的话,让我很温暖,还有那位投良好的仁兄。 |
|
返回顶楼 | |
发表时间:2010-12-31
看看common-lang的StringUtils中的实现,优秀的代码大家应该没什么意见
public static boolean isNumeric(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if (Character.isDigit(str.charAt(i)) == false) { return false; } } return true; } Integer中的public static int parseInt(String s, int radix)只是包含了大量的检测代码,然后实现和上面代码雷同,个人认为能捕获的异常一定要捕(非RuntimeException),能够用正常代码处理的就不要使用异常,不然既会影响性能,又不符合异常机制的设计初衷 |
|
返回顶楼 | |
发表时间:2010-12-31
Integer中的public static int parseInt(String s, int radix)只是包含了大量的检测代码,然后实现和上面代码雷同,个人认为能捕获的异常一定要捕(非RuntimeException),能够用正常代码处理的就不要使用异常,不然既会影响性能,又不符合异常机制的设计初衷
--------------------------------------- actually LZ's case might be one of the 异常机制的设计初衷. but it's a danguous way and might cause potential problems. so it's not for jr developers. |
|
返回顶楼 | |
发表时间:2010-12-31
javarubypython 写道 不明白楼主怎么想的,写个正则不是更好吗?
性能最好。就算不考虑性能,从代码上来说也是又少又优雅。软件业门坎再低,也不能连个正则都不会或者不想写吧。 in fact, 正则 is only designed to parse specific string. Itself is either not easy to write or to understand. even for a 正则 wrote by you. when you look at it after several month, you probably will say: what the f*ck is this? |
|
返回顶楼 | |
发表时间:2010-12-31
gdpglc 写道 javarubypython 写道 不明白楼主怎么想的,写个正则不是更好吗?
性能最好。就算不考虑性能,从代码上来说也是又少又优雅。软件业门坎再低,也不能连个正则都不会或者不想写吧。 好象你很懂正则呀。 问个问题? String s="abc\\def"; 你能把这个字任串中的\用String的replaceAll方法换成*吗? 如果你写不出来,别来和我说正则。 我遇到过工作五年的人,仍就对正则一知半解。 你测测吧,正则和异常哪个性能好,别拍脑门。正则表达式首先要对正则进行解析,然后再进行匹配。性能最好从何说起?你也外行的可以! 既然你能接受得了异常的性能,为什么就接受不了正则的性能?至少正则可以让代码看上去更好看。 |
|
返回顶楼 | |
发表时间:2010-12-31
最后修改:2010-12-31
jackerxff 写道 看看common-lang的StringUtils中的实现,优秀的代码大家应该没什么意见
public static boolean isNumeric(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if (Character.isDigit(str.charAt(i)) == false) { return false; } } return true; } 也不一定,if (Character.isDigit(str.charAt(i)) == false)这一句在很多追求完美的人眼里是不足够好的 |
|
返回顶楼 | |
发表时间:2010-12-31
楼主方法简单 门槛低 开发效率高 。
什么chatat 什么 正则判断 能拍脑袋写清楚的没几个人。 不过下面的测试回复的很有水平 很严谨 佩服 |
|
返回顶楼 | |
发表时间:2010-12-31
gdpglc 写道 public static boolean validateInteger(String str) {
try { Integer.parseInt(str); } catch (Exception ex) { return false; } return true; } 怎么就那么多人想不开呢? 我就不明白了,用异常做判断怎么了? 那到底什么原因,说这代码不能用呢??? IcyFenix 写道 进行JIT预热 字符串为整数,验证方式1:9535717ns 字符串为整数,验证方式2:8934368ns 字符串为非整数,验证方式1:2029725263ns 字符串为非整数,验证方式2:7702305ns 不进行JIT预热 字符串为整数,验证方式1:25392935ns 字符串为整数,验证方式2:15882435ns 字符串为非整数,验证方式1:2058369758ns 字符串为非整数,验证方式2:9489115ns 如果不出现异常,那性能其实差不了多远,尤其是JIT编译了之后。但出现了异常就有两百多倍的差距,还是很客观的。 呵呵,gdpglc言语上有点吵架了 gdpglc太激动了,老实说如果是纯粹的判断,使用异常的方式非常的好! 不过按照IcyFenix的,使用for判断每一个char比较合适,我赞同 jackerxff 写道 Character.isDigit(str.charAt(i)) 的判断条件 对于这个判断整数来说 楼主的方法,实际上对绝大多数系统来说根本没有任何影响! 楼主是不是因为这个被人训了,所以到此找回平衡 ^ ^ 我以前遇到过多次这样的事情,什么变量要从for、while提出来因为XXXX,后来看了极限编程和重构,都说先构建易懂的,不要过早介入优化。对于这个方法,容易看懂即可。两种方法都好。 我很赞同楼主的分析:性能(时间和内存)真正出在哪儿?几ms的损失绝不是问题? |
|
返回顶楼 | |