成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java程序員慣性思維的一個錯誤

開發 后端
很久沒有積累東西了,碰巧前幾天遇到一個的問題,雖然不大但是比較有意思,在這里稍微記錄一下,以后可以作為面試題之類的考驗其他人,想想也遠比那些被我們詬病的題目要實際的多。

很久沒有積累東西了,碰巧前幾天遇到一個的問題,雖然不大但是比較有意思,在這里稍微記錄一下,以后可以作為面試題之類的考驗其他人,想想也遠比那些被我們詬病的題目要實際的多:

有表結構如下:

  1. T_SOME_TABLE{ 
  2. crowid varchar(36); 
  3. zrmb float(7,3); 
  4. zjdw float(7,3); 
  5. }  

問以下兩段代碼,哪段會出現錯誤,為什么? 

代碼片段一:

  1. //后臺代碼如下: 
  2.     String hqlStr="select SUM(t.zrmb) AS SUM_1,SUM(t.zjdw) AS SUM_2 from T_SOME_TABLE t where 1=1 "
  3.     List sumList=baseDao.find(hqlStr);//hibernate實現查詢HQL匯總語句返回結果List 
  4.     request.setAttribute("sumList",sumList); 
  5.  
  6. //前臺代碼如下: 
  7.     String sum1=""
  8.     String sum2=""
  9.     ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList"); 
  10.     if(null!=sumList){ 
  11.         for(int i=0;i<sumList.size();i++){ 
  12.             Object[] tempObj=(Object[])sumList.get(i); 
  13.             sum1=tempObj[0]==null?"0.0":tempObj[0].toString(); 
  14.             sum2=tempObj[1]==null?"0.0":tempObj[1].toString(); 
  15.         } 
  16.     } 
  17.     out.prinln("sum1:"+sum1); 
  18.     out.prinln("sum2:"+sum2); 

代碼片段二:

  1. //后臺代碼如下: 
  2.     String hqlStr="select SUM(t.zrmb) AS SUM_1  from T_SOME_TABLE t where 1=1 "
  3.     List sumList=baseDao.find(hqlStr);//hibernate實現查詢HQL匯總語句返回結果List 
  4.     request.setAttribute("sumList",sumList); 
  5.  
  6. //前臺代碼如下: 
  7.     String sum1=""
  8.     ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList"); 
  9.     if(null!=sumList){ 
  10.         for(int i=0;i<sumList.size();i++){ 
  11.             Object[] tempObj=(Object[])sumList.get(i); 
  12.             sum1=tempObj[0]==null?"0.0":tempObj[0].toString(); 
  13.         } 
  14.     } 
  15.     out.prinln("sum1:"+sum1); 

實際運行會發現 代碼片段2會出現錯誤 而代碼片段1是正常可以運行的,這里是在功能開發過程中 片段2是在片段1的基礎上慣性思維去實現的,而實際運行卻會發現 結果并不是想要的那樣,這個動手能力強的人可以實際調試一下就會很快明白里面的所以然。這里簡單說一下:

做過hibernate的人都知道 用hibernate調用sql查詢出的匯總語句,返回的結果是封裝成Object的保存到List中的,而代碼1和代碼2相比較,差別只是在字段的多少上,如果是2個以上的字段 結果是封裝成Object[]數組的,這個無可爭議,但是如果是一個字段的話List里保存的是Object,而不是Object[]數組。

這樣就可以推論這里hibernate內部是做了處理的。

代碼2循環中應該是:

  1. Object tempObj=(Object)sumList.get(i);  
  2. sum1=tempObj==null?"0.0":tempObj.toString(); 

原文鏈接:http://moonights.iteye.com/blog/1272980

【編輯推薦】

  1. 高手真經 13條Java核心技術
  2. 去故就新 Java線程新同步機制
  3. Java的ClassLoader機制解析
  4. 精解Java中代理模式的實現
  5. Java常量池詳解之抓狂的面試題
責任編輯:林師授 來源: moonights的博客
相關推薦

2019-09-19 14:28:14

程序員分布式系統

2020-02-22 21:51:43

程序員Microsoft SServerSQL

2014-01-06 09:33:32

程序員管理

2020-10-05 21:13:37

程序員技能開發者

2015-06-08 10:48:39

程序員程序員自白

2011-02-14 13:05:17

PythonWeb

2015-06-16 10:31:36

程序員

2020-07-10 09:55:15

程序員技能開發者

2021-06-04 10:15:17

JavaSQL編程語言

2021-07-01 07:43:41

項目程序員代碼

2019-11-07 15:30:00

EmacsIDE

2015-08-24 10:07:13

程序員bug

2020-01-06 09:53:29

程序員

2010-10-18 11:39:41

程序員

2015-05-13 14:06:03

程序員糟糕的程序員

2012-01-09 17:45:48

Java程序員

2009-02-12 15:07:57

程序員創業經驗

2019-04-22 10:25:52

程序員技術職場

2012-04-12 14:49:31

程序員

2015-04-08 10:57:15

程序員程序員四年經歷
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区在线 | www.伊人.com| 国产欧美综合在线 | 日本人和亚洲人zjzjhd | 国产午夜精品一区二区三区四区 | 欧美一级做性受免费大片免费 | 国产精品一卡二卡三卡 | 观看av| 欧美1页 | 国产精品成人一区二区三区 | 亚洲成人精品一区二区 | 久久精品国产精品青草 | 亚洲欧美视频一区 | 国产精品久久久久免费 | 亚洲电影免费 | 色婷婷精品 | 成人黄色电影在线播放 | 不卡一区二区在线观看 | 99视频在线免费观看 | 亚洲成人av在线播放 | 欧美成人一区二区三区 | 免费观看黄a一级视频 | 日本在线免费视频 | 精品自拍视频 | 欧美日韩一卡 | 日韩精品久久久 | 成人小视频在线免费观看 | 国产欧美日韩综合精品一区二区 | 99精品视频一区二区三区 | 欧美黄色小视频 | 日韩在线 | 精品1区2区 | 美女黄网 | 色在线免费视频 | 日韩中文视频 | 成人免费视频在线观看 | 久久99精品国产自在现线小黄鸭 | 亚洲一区二区免费视频 | 成人av电影在线观看 | 亚洲成人精品免费 | www.午夜|