首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Java软件工程师惯性思维的一个异常

2012-08-13 
Java程序员惯性思维的一个错误很久没有积累东西了,碰巧前几天遇到一个的问题,虽然不大但是比较有意思,在这

Java程序员惯性思维的一个错误

很久没有积累东西了,碰巧前几天遇到一个的问题,虽然不大但是比较有意思,在这里稍微记录一下,以后可以作为面试题之类的考验其他人,想想也远比那些被我们诟病的题目要实际的多:

  有表结构如下:

  T_SOME_TABLE{

  crowid varchar(36);

  zrmb float(7,3);

  zjdw float(7,3);

  }

  问以下两段代码,哪段会出现错误,为什么?

  代码片段一:

  //后台代码如下:

  String hqlStr="select SUM(t.zrmb) AS SUM_1,SUM(t.zjdw) AS SUM_2 from T_SOME_TABLE t where 1=1 ";

  List sumList=baseDao.find(hqlStr);//hibernate实现查询HQL汇总语句返回结果List

  request.setAttribute("sumList",sumList);

  //前台代码如下:

  String sum1="";

  String sum2="";

  ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList");

  if(null!=sumList){

  for(int i=0;i

  Object[] tempObj=(Object[])sumList.get(i);

  sum1=tempObj[0]==null?"0.0":tempObj[0].toString();

  sum2=tempObj[1]==null?"0.0":tempObj[1].toString();

  }

  }

  out.prinln("sum1:"+sum1);

  out.prinln("sum2:"+sum2);

  代码片段二:

  //后台代码如下:

  String hqlStr="select SUM(t.zrmb) AS SUM_1 from T_SOME_TABLE t where 1=1 ";

  List sumList=baseDao.find(hqlStr);//hibernate实现查询HQL汇总语句返回结果List

  request.setAttribute("sumList",sumList);

  //前台代码如下:

  String sum1="";

  ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList");

  if(null!=sumList){

  for(int i=0;i

  Object[] tempObj=(Object[])sumList.get(i);

  sum1=tempObj[0]==null?"0.0":tempObj[0].toString();

  }

  }

  out.prinln("sum1:"+sum1);

  实际运行会发现 代码片段2会出现错误 而代码片段1是正常可以运行的,这里是在功能开发过程中 片段2是在片段1的基础上惯性思维去实现的,而实际运行却会发现 结果并不是想要的那样,这个动手能力强的人可以实际调试一下就会很快明白里面的所以然。这里简单说一下:

  做过hibernate的人都知道 用hibernate调用sql查询出的汇总语句,返回的结果是封装成Object的保存到List中的,而代码1和代码2相比较,差别只是在字段的多少上,如果是2个以上的字段 结果是封装成Object[]数组的,这个无可争议,但是如果是一个字段的话List里保存的是Object,而不是Object[]数组。

  这样就可以推论这里hibernate内部是做了处理的。

  代码2循环中应该是:

  Object tempObj=(Object)sumList.get(i);

  sum1=tempObj==null?"0.0":tempObj.toString();


 

-------------------------------------------------------------

移动开发者大会:Android开发者将越来越赚钱   海量Android教程、开发资料和源码

10类最急需IT人才:Java开发者居首                   给将成为“Android高手”的10个建议 

成为Java高手的25个学习目标--非常经典           Android 4.1果冻豆新特性详解 

芯片巨头海思和展讯:给中国芯片业带来信心    海量经典Java教程、学习资料和源码

Java侵权诉讼Google获胜,Android厚积薄发       面试必备:Android笔试总结 

Android高手必须掌握的28大内容和10个建议     Android平台研发人才缺口30万 

Android开发环境安装和配置步骤详细图解        2012国内移动App开发者大调查结果 

Windows 7下搭建android开发环境步骤图解      Android 4.0的30个突出的新特性 

Android高手要经过的6个阶段和6个境界           linux下搭建Android开发环境步骤 

从IT菜鸟变为“IT骨干开发者”的11个建议        程序员编程技术迅速提高的终极攻略 

2012世界各国人均GDP排名,中国超泰国           2012年全国各省平均工资排行 

2012年中国大学高校排行榜(580强排名)      中国各省市面积和人口数量排名 

中国百万开发者大调查:程序员的薪水不错     Java高手需要越过的10座高山

周立功谈嵌入式:我的25年嵌入式生涯           Android和Java语言的异同和关系 

华为中国区手机销量达千万,80%为智能机        谷歌Android碎片化严重

2012年中国各省GDP和人均GDP排名              90后就业“钱景”:IT仍是最佳选择

2012全球城市竞争力500强,69个中国城市上榜   不要做浮躁的软件工程师 

2012年世界500强,79家大陆香港台湾公司上榜名单 给IT新兵的15个建议 

美国知名科技公司入门级软件工程师的薪水排名  回顾Java经过的风风雨雨 

71道经典Android面试题和答案--重要知识点都涉及到了 

高校应届毕业生“IT业”收入最高,Android技术最热门 

 

 

 

热点排行