趁热打铁,写下前几天做TOLO3G项目遇到的小问题

来源:互联网 发布:ip与mac绑定防蹭网 编辑:程序博客网 时间:2024/04/30 21:17

上两周做了3g项目,发现自己的提升空间还是非常大的,各个环节把握上还完全是新手。被XX当成菜鸟了。当然,在不知不觉中学习到了很多,也算是见识了一次。下面总结一下一些感想与碰到的小问题:

首先是一个感慨:在项目的测试阶段,才发现原来企业级的软件开发只有那么五分之一的时间是的编写代码,正常流程的代码的编写时间又只占总代码编写时间的五分之一,测试文档发下来之后才发现在我写的那个模块七八个用例中,我只考虑了最最基本的那个,而且还没完全实现..   (提升空间大啊)

 

好, 速度进入小问题阶段,

一个int类型最大值问题话了我半个晚上  ....     在判断用户选择的时间是否大于90天时我用了下面的写法:

    XX.getTime() - System.currentTimeMillis() >90*24*60*60*1000

结果各种测试都为true,

想到前两天看java编程思想 里面有个练习题让我输出了Integer 类型的最大值,

于是写了一个Test类,各种测试:

System.out.println(Integer.MAX_VALUE);的结果为    2147483647

System.out.println(90*24*60*60*1000 );的结果为    -813934592

所以  ...  猜想....90*24*60*60*1000的值要大于int的最大值

于是换long型试试,果然没问题

long l = 90;

l = l*24*60*60*1000;

System.out.println(l);//7776000000

 

总结:int用4个字节,最大值是2的31次方,21亿+。java中默认数字是int型,所以过大数字运算要注意类型。

 

还有,讲项目的时候我看到其他组的同学这个问题的写法为:

long l = 90*24*60*60*1000L;

这样写也没有问题,但是我看到了隐患...

这样写前面几个数字是用int在做运算的,到最后一个数才换成long型,如果前面几个数运算后就已经超过了int的最大值此问题还是没有解决,给程序带来隐患。

因为这种地方java是不会报错的,只有通过测试才能发觉,所以又一次体会到测试的重要性。