java基礎知識問答—java入門與加深二 (2)

發表于:2007-04-29來源:作者:點擊數: 標簽:java知識問答加深基礎入門
45 我想將一個父類對象轉換成一個子類對象該怎么做? 答:強制類型轉換。如 public void meth(A a) { B b = (B)a; } 如果a實際上并不是B的實例,會拋出ClassCastException。所以請確保a確實是B的實例。 46 其實我不確定a是不是B的實例,能不能分情況處理? 答
45 我想將一個父類對象轉換成一個子類對象該怎么做?  

  答:強制類型轉換。如

  public void meth(A a)

  {

  B b = (B)a;

  }

  如果a實際上并不是B的實例,會拋出ClassCastException。所以請確保a確實是B的實例?! ?

  46 其實我不確定a是不是B的實例,能不能分情況處理?  

  答:可以使用instanceof操作符。例如  

  if( a instanceof B )

  {

  B b = (B)a;

  }

  else

  {

  ...  

  }  

  47 我在方法里修改了一個對象的值,但是退出方法后我發現這個對象的值沒變!  

  答:很可能你把傳入參數重賦了一個新對象,例如下列代碼就會造成這種錯誤:  

  public void fun1(A a) //a是局部參數,指向了一個外在對象?! 

  a = new A(); //a指向了一個新對象,和外在對象脫鉤了。如果你要讓a作為傳出變量,不要寫這一句?! ?

  a.setAttr(attr);//修改了新對象的值,外在對象沒有被修改。

  }  

  基本類型也會出現這種情況。例如:  

  public void fun2(int a)

  {

  a = 10;//只作用于本方法,外面的變量不會變化。

  }  

  六、javascript:;" onClick="javascript:tagshow(event, 'java');" target="_self">java.util篇  

  48 java能動態分配數組嗎?  

  答:可以。例如int n = 3; Language[] myLanguages = new Language[n];  

  49 我怎么知道數組的長度?  

  答:用length屬性。如上例中的 myLanguages.length 就為 3?! ?

  50 我還想讓數組的長度能自動改變,能夠增加/刪除元素?! ?

  答:用順序表--java.util.List接口?! ?

  你可以選擇用ArrayList或是LinkedList,前者是數組實現,后者是鏈表實現?! ?

  例如: List list = new ArrayList(); 或是 List list = new LinkedList(); ?! ?

  51 什么是鏈表?為什么要有兩種實現?  

  答:請補習數據結構?! ?

  52 我想用隊列/棧?! ?

  答:用java.util.LinkedList。

  53 我希望不要有重復的元素?! ?

  答:用集合--java.util.Set接口。例如:Set set = new HashSet()?! ?

  54 我想遍歷集合/Map?! ?

  答:用java.util.Iterator。參見API?! ?

  55 我還要能夠排序?! ?

  答:用java.util.TreeSet。例如:Set set = new TreeSet()。放進去的元素會自動排序?! ?

  你需要為元素實現Comparable接口,還可能需要提供equals()方法,compareTo()方法,hash Code()方法?! ?

  56 但是我想給數組排序?! ?

  答:java.util.Arrays類包含了sort等實用方法?! ?

  57 我想按不同方法排序?! ?

  答:為每種方法定義一個實現了接口Comparator的類并和Arrays綜合運用?! ?

  58 Map有什么用?  

  答:存儲key-value的關鍵字-值對,你可以通過關鍵字來快速存取相應的值?! ?

  59 set方法沒問題,但是get方法返回的是Object?! ?

  答:強制類型轉換成你需要的類型。參見45?! ?

  60 我要獲得一個隨機數?! ?

  答:使用java.util.Random類?! ?

  61 我比較兩個String總是false,但是它們明明都是"abc" !  

  答:比較String一定要使用equals或equalsIgnoreCase方法,不要使用 == !  

  ==比較的是兩個引用(變量)是否指向了同一個對象,而不是比較其內容。


原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...

熱門標簽

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97