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<sumList.size();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<sumList.size();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();

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
1月前
|
存储 安全 Java
Java 程序员极速上手 go
Java 程序员极速上手 go
28 0
|
2月前
|
设计模式 缓存 分布式计算
|
3月前
|
人工智能 Java 大数据
Java程序员真的还有未来吗?如何备战2024春招?并狂拿大厂offer?
Java程序员还有未来吗? 嘿,小伙伴们,你们有没有想过Java程序员还有没有未来? 哈哈,别担心,我这就来给你们答疑解惑! 首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。 那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们!这些新语言和框架的出现并不会让Java消失。相反,它们
78 0
|
3月前
|
Java 程序员
Java程序员-你真的了解死锁吗
Java程序员-你真的了解死锁吗
36 0
|
4月前
|
存储 缓存 算法
Java程序员想年后跳槽,对JVM没有深入的理解,我劝你还是别跳了
Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点。所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机。
|
3月前
|
算法 架构师 安全
10年Java面试总结:Java程序员面试必备的面试技巧
作为一名资深10年Java技术专家,我参与了无数次的面试,无论是作为面试者还是面试官。在这里,我将分享我的一些面试经历和面试技巧,希望能帮助即将面临面试的Java程序员们。回顾我的Java职业生涯,我清晰地记得一次特别的面试经历。那是我申请一家知名科技公司的Java开发岗位。为了这次面试,我花了几周的时间准备,这不仅包括Java的基础和高级知识,还有关于公司产品的研究。
134 0
|
4月前
|
消息中间件 缓存 Java
一次阿里的面试经历,让“我”明白了Java程序员之间的差距
上周在拉勾上收到一个蚂蚁金服的大哥要我的简历,当时很惊讶,居然有蚂蚁金服的找到我,然后想都没想就给了。 受宠若惊呀,我知道自己的水平跟阿里的差距有多远,以前一直没用勇气去投,连试试都不敢。这次居然主动找过来了,当时就再想,难道阿里这么缺人么?还是只是为了完成某些KPI,当然了,我这种想法比较幼稚。
|
17天前
|
XML Java 程序员
作为Java程序员还不知道Spring中Bean创建过程和作用?
作为Java程序员还不知道Spring中Bean创建过程和作用?
12 0
|
1月前
|
Java 程序员 数据安全/隐私保护
【Java每日一题】——第十二题:完成百战程序员系统登录功能
【Java每日一题】——第十二题:完成百战程序员系统登录功能
30 0
|
3月前
|
算法 搜索推荐 Java
java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知
别误会哈,不是老苏我哈,老苏没有奔着大厂去奋斗的精力了! 这是一个来自粉丝(程序员小博)的投稿