去易保面試了,有幾個問題不太懂,特請教大家


考題還真難啊,很多問題問的太基礎,象我們這種干了好幾年的JAVA程序員,長期由於開發的不規范及片面性,所以很多基礎和原理都記不太清楚了。

而且竟然還都是英文的問卷,很多單詞都看不太懂,慚愧。

好了,言歸正傳,這幾道問題真不知道怎么回答。

請從程序的書寫規范性(翻譯過來的意思應該是這樣)說明以下寫法的不足或錯誤之處(注:這些代碼都是編譯通過的)

1、ArrayList list = new ArrayList();

2、if(formBeans.getName().equals("abc")){...}

3、int xx = formBeans.isFunc()==true ? 1:0;

還有道題

56 个解决方案

#1


1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空。 
3.這個具體執行應該沒有問題,但是代碼可讀性太差,這幾個運算符優先級高不明白的話容易出問題。

#2


第一題是空指針問題
第二題是如果formBeans.getName()的值是null的話會拋異常。應該倒過來寫
至於第三題不知道

#3


3、int xx = formBeans.isFunc()? 1:0; 

formBeans.isFunc()本來就返回的是boolean

#4


1樓說的對!

#5


第一,二題同一樓

三是一個什么表示來着我忘了

具體的就是 

看  formBeans.isFunc()的返回結果是否是true

如果是xx就賦值為1,否就賦值為0

這樣寫的代碼可讀性差

不易於后期的維護及二次開發

#6


up

#7


up,up

#8


引用 1 樓 jinhuiyu 的回復:
1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空。 
3.這個具體執行應該沒有問題,但是代碼可讀性太差,這幾個運算符優先級高不明白的話容易出問題。


頂。

3.不利於維護。

#9


1.對象的考慮,應該new出的是List接口
2.不推薦這樣的寫法,考慮到空指針
3.貌似沒什么問題。。。

#10


路過學習 頂!
就會第一題 慚愧啊

#11


第三題前面的條件formBeans.isFunc()==true 沒必要再什么等於true,英為方法isFunc()本身返回的就是bool型了。

#12


第二個,學到了學到了,可以這樣避免空指針,哇哈哈哈哈,學到了學到了!

#13


知道前2個,  第3個不知道為什么, 應該是已經返回的就是boolean  就沒必要在比了吧

#14


1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空
3.int xx = formBeans.isFunc()? 1:0; 

#15


引用 1 樓 jinhuiyu 的回復:
1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 



為什么new兩個對象?不是new 一個對象,然后將new的結果(引用)傳遞給list引用變量嗎?

#16


1:我覺得這個問題在於用List list = new ArrayList()能夠提高代碼的通用性,若以后要用LinkedList時,只要改這一處,其它用list的代碼不要改動了.

#17


頂一個~ 

#18


居然都會~~~xixi

#19


干了好幾年的JAVA程序員....

#20


路過,頂!

#21



活到老學到老

#22


就第三個不會,關鍵是方法沒見過
up..

#23


三目運算符?

#24


呵,我也學會了

#25


引用 23 樓 andyivy6 的回復:
三目運算符?

三元運算符。

#26


1、ArrayList list = new ArrayList(); 
寫成List list=new ArrayList();

2、if(formBeans.getName().equals("abc")){...} 
formBeans.getName() 可能返回null 值 然null 是沒有equals 方法的 會出異常 所以 應該寫成 if("abc".equals(formBeans.getName())){...} 

3、int xx = formBeans.isFunc()==true ? 1:0; 
三元表達式 int xx = formBeans.isFunc()? 1:0; 對於布爾類型的表達式 沒有必要再去判斷其是否等於true 了 

#27


高手啊 學會了 俺就會一個

#28


學習!

#29


1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空。
3.前面的條件formBeans.isFunc()==true 沒必要再什么等於true,英為方法isFunc()本身返回的就是boolean型了。如果該boolean返回的是true那就ii=1,否則=0

#30


up
引用 29 樓 solomon1987 的回復:
1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空。 
3.前面的條件formBeans.isFunc()==true 沒必要再什么等於true,英為方法isFunc()本身返回的就是boolean型了。如果該boolean返回的是true那就ii=1,否則=0

#31


引用 16 樓 qiaoweida 的回復:
1:我覺得這個問題在於用List list = new ArrayList()能夠提高代碼的通用性,若以后要用LinkedList時,只要改這一處,其它用list的代碼不要改動了.

第1題 應該這個正解。什么兩個對象。。 汗 你以為是String啊

#32


學習了 , 兄弟們!!

#33


第一個考的是多態性問題,應該這樣寫 List list=new ArrayList() 在java編程思想中理解是向上轉型,提高代碼通用性,

#34


第一個的確是用來
List list = new ArrayList(); 如果是1.5以上 最好引入class type
2:上面很多人說的也對
3:的確 ==true 多余 ,並不是代碼可讀性差 仔細看看很多框架的源代碼 的確都這樣寫的,如果說可讀性差 只能說明還是寫代碼或者見識的代碼太少

#35


只會前兩個,up

#36


1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口,更靈活
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空。 
3.int xx = formBeans.isFunc()? 1:0; 

#37


1L的解答第一個哪來的兩個對象,汗

#38


引用 14 樓 pailman 的回復:
1:應該是 List list = new ArrayList()吧,這樣好像是new了一個對象 因為List是借口, 但是他給出的是new了兩個對象 
2.應該寫成if(("abc").equals(formBeans.getName*()),這樣主要是避免空指針異常,因為formBeans.getName()有可能為空 
3.int xx = formBeans.isFunc()? 1:0; 

ty

#39


引用 26 樓 coolbaby1984 的回復:
1、ArrayList list = new ArrayList(); 
寫成List list=new ArrayList(); 

2、if(formBeans.getName().equals("abc")){...} 
formBeans.getName() 可能返回null 值 然null 是沒有equals 方法的 會出異常 所以 應該寫成 if("abc".equals(formBeans.getName())){...} 

3、int xx = formBeans.isFunc()==true ? 1:0; 
三元表達式 int xx = formBeans.isFunc()? 1:0; 對於布爾類型的表達式 沒有必要再去判斷其是否等於true …


規范性問題,看來LZ平時不太注意,養成好習慣是很重要的

#40


1 .List l=new Arrarylist() 這樣靈活性大吧
2."df".equals(xxx)這樣寫好像不會出空值的現象吧
學習

#41


第三個有什么問題嗎

#42


引用樓主 qinli 的帖子:
1、ArrayList list = new ArrayList(); 
Collection<E> col=new ArrayList<E>()
2、if(formBeans.getName().equals("abc")){...} 
"abc".equals(formBeans.getName())
3、int xx = formBeans.isFunc()==true ? 1:0; 
int xx=(formBeans.isFunc()? 1:0;);

#43


都是很簡單的基礎啊~!!!

#44


頂 頂 學習一下

#45



長經驗了,呵呵

#46


純粹是路過。

#47


路過學習

#48


第一道題應該寫出范型,否則編譯時報警告.
第二道題formBeans.getName()應該先判斷是否為空即if(formBeans.getName() != null && formBeans.getName().equals("abc")){}否則很可能出空指針錯誤.

#49


引用 12 樓 sasgsc 的回復:
第二個,學到了學到了,可以這樣避免空指針,哇哈哈哈哈,學到了學到了!

haha 

#50


引用 49 樓 cmz114 的回復:
引用 12 樓 sasgsc 的回復:
第二個,學到了學到了,可以這樣避免空指針,哇哈哈哈哈,學到了學到了! 
 
haha 

up

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com