很久没有积累东西了,碰巧前几天遇到一个的问题,虽然不大但是比较有意思,在这里稍微记录一下,以后可以作为面试题之类的考验其他人,想想也远比那些被我们诟病的题目要实际的多:
有表结构如下:
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技术最热门
分享到:
相关推荐
JAVA程序员简历模板 JAVA程序员简历模板
Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历模版 Java程序员面试资料及简历...
java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版java程序员简历模版...
java程序员笔试题java程序员笔试题
《Java程序员面试宝典》通过200个面试题,对企业招聘Java程序员需要掌握的知识进行了系统、全面的总结,以帮助读者进行充分的面试准备,在激烈的竞争中拔得头筹。《Java程序员面试宝典》列举了各大IT公司的面试真题...
java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...
java程序员转正pptjava程序员转正pptjava程序员转正ppt
java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java程序员面试必备的32个要点java...
Java程序员面试笔试宝典-何昊pdf版,高清,带有书签。
JAVA程序员面试 JAVA程序员面试 JAVA程序员面试 JAVA程序员面试
内容概要:该资源是一份优秀的Java程序员简历模板,包含了详细的简历内容和排版样式,适用于Java程序员求职应聘时使用。 适用人群:Java程序员、计算机科学和技术相关专业的学生和毕业生、招聘人员和HR等对Java...
Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略 Java程序员职场全攻略
java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题java程序员面试题
java程序员个人简历.doc JAVA软件工程师简历范文.docx Java软件开发工程师个人简历模板.doc 个人简历(示范案例).doc 应届生Java开发个人简历.doc 非常经典java求职简历(三套-含项目介绍).doc 高级Java工程师架构师-...
java程序员两个简历Word简历模版样试
Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书Java 程序员宝典 pdf 电子书
Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事 Java程序员上班那点事
最全JAVA学习路线一条龙思维导图(附资源链接)PS:程序员鱼皮 1. 最新,完整一条龙的大厂 Java 学习路线,从入门到入土 2. 同时适用于想全面学习 / 快速求职的同学,可以根据符号来定制自己的专属学习路线 3. 给出...
一个java程序员的成长历程
2018年最新版Java程序员面试宝典,面试的神器,可以有效的通过面试环节,得到满意的工作