• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • java小問題集合

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    1. 問:怎樣用 Windows 的記事本 (Notepad) 來編輯 Java源程序? HM,-l 達內科技論壇 -- 達內科技論壇 * 答:記得存檔時擴展名要加上". java ",文件類型改成:“所有的文件(*.*)”。 ]o*1US 達內科技論壇 -- 達內科技論壇 4 達內科技論壇 -- 達內科技論壇 B
    1. 問:怎樣用 Windows 的記事本 (Notepad) 來編輯 Java源程序? HM,<-l
    ©達內科技論壇 -- 達內科技論壇  *
    答:記得存檔時擴展名要加上".java",文件類型改成:“所有的文件(*.*)”。 ]o*1US
    ©達內科技論壇 -- 達內科技論壇  4
    ©達內科技論壇 -- 達內科技論壇  BwMrw7
    ©達內科技論壇 -- 達內科技論壇  fz)Zp>
    2. 問:到底 Java 是如何傳遞參數的?是by value或by reference? rNZ
    ©達內科技論壇 -- 達內科技論壇  LE
    答:All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根據以上 Java規格文件的說法, 所有參數應該都是傳值的(by value)。但實際上, 實際經驗卻告訴我們所有 Java 的對象都是傳址的(by reference)。因此我們可以這樣解釋: 基本類型(如int, float, char等)是by value,而所謂“對象”(Object)則是by value of reference to object。 |Yy
    ©達內科技論壇 -- 達內科技論壇  xs*
    ©達內科技論壇 -- 達內科技論壇  >2
    ©達內科技論壇 -- 達內科技論壇  y
    3. 問:String這個類型的class為何定義成final? $-~\
    ©達內科技論壇 -- 達內科技論壇  HFnLC
    答: 主要是為了“效率” 和 “安全性” 的緣故。若 String允許被繼承, 由于它的高度被使用率, 可能會降低程序的性能,所以String被定義成final。 RDx"|
    ©達內科技論壇 -- 達內科技論壇  ULx%
    ©達內科技論壇 -- 達內科技論壇  +~t
    ©達內科技論壇 -- 達內科技論壇  )%1{9
    4. 問:finalizers和C++ 的 destructors有何差異? zKxR
    ©達內科技論壇 -- 達內科技論壇  /
    答:Java內部具有“內存使用回收” 的機制, 雖然它也提供了類似 (C++ 的) destructors的 finalize(),每個對象都可以使用這個方法 method,但必須冒著破壞原先回收機制的危險。所以建議盡量避免使用finalize(),不妨考慮多使用 null 及 dispose() 來釋出資源會好一些。 <e
    ©達內科技論壇 -- 達內科技論壇  Q\{"v
    ©達內科技論壇 -- 達內科技論壇  iTW`Sp
    ©達內科技論壇 -- 達內科技論壇  nsRXJ
    5. 問:繼承了一個class叫做 Frotz,編譯器卻給我“No constuctor Frotz() in the class”這樣的錯誤提示,為什么呢? a1VK1p
    ©達內科技論壇 -- 達內科技論壇  tv'TSo
    答:記住每當您定義了一個 class的constructor,除非您一開始就去call 這個constructor,否則 Java 會自動引入superclass原先不含參數的 constructor, 如果superclass的 constructor都是有參數的,那么問題中的錯誤提示便出現了。 解決的方法很簡單, 找一找 API文件,加上正確的參數就得了。 `!
    ©達內科技論壇 -- 達內科技論壇  Jm?sR
    ©達內科技論壇 -- 達內科技論壇  cAB
    ©達內科技論壇 -- 達內科技論壇  J%]2H-
    6. 問:怎樣讓char類型的東西轉換成int類型? 6j
    ©達內科技論壇 -- 達內科技論壇  }(:Ei^
    答: ©達內科技論壇 -- 達內科技論壇  bl-A$N
    ©達內科技論壇 -- 達內科技論壇  D@.
    char c = 'A'; W+{~*
    ©達內科技論壇 -- 達內科技論壇  8
    int i = c; >!X:
    ©達內科技論壇 -- 達內科技論壇  n
    //反過來只要作強制類型轉換就行了 5J**c
    ©達內科技論壇 -- 達內科技論壇  fF"4BT
    c = (char) I; }#
    ©達內科技論壇 -- 達內科技論壇  7\%
    ©達內科技論壇 -- 達內科技論壇  R
    ©達內科技論壇 -- 達內科技論壇  OW
    7. 問:我的applet原先好好的, 一放到web server就會有問題,為什么? Nj
    ©達內科技論壇 -- 達內科技論壇  L
    答:一般來說,從以下方向試試: vg
    ©達內科技論壇 -- 達內科技論壇  "CKo7
    確定class文件的格式沒錯——已經編譯過,也沒有損壞的情形; 4s4(
    ©達內科技論壇 -- 達內科技論壇  B*?PI
    確定所有用到的class文件放到web server上,少一個都不行; pp52g
    ©達內科技論壇 -- 達內科技論壇  d9b5V.
    確定所有的文件名和class名稱一致,特別檢查大小寫有無差錯; bt'7p
    ©達內科技論壇 -- 達內科技論壇  i?
    如果程序中用到package,web server上的目錄就要當心了。譬如您在class中宣告了一個叫COM.foo.util的package,那么web server的applet codebase目錄底下就非得有 COM/foo/util這個子目錄不可。(注意目錄名稱也有大小寫之分); iFC#
    ©達內科技論壇 -- 達內科技論壇  Yqc
    web server上的文件檔案應該事先設定好。(尤其是search,read和execute權限) ${2h/
    ©達內科技論壇 -- 達內科技論壇  j_F
    ©達內科技論壇 -- 達內科技論壇  ,Fk-L
    ©達內科技論壇 -- 達內科技論壇  '
    8. 問:怎樣在 Applet中用某個圖形涂滿整個背景? {!.'
    ©達內科技論壇 -- 達內科技論壇  =3
    答:在背景建立 Panel 或 Canvas, 然後用圖形填滿它。 g
    ©達內科技論壇 -- 達內科技論壇  8U
    ©達內科技論壇 -- 達內科技論壇  !A[
    ©達內科技論壇 -- 達內科技論壇  n:;h
    9. 問:怎樣在 Applet 中建立自己的菜單(MenuBar/Menu)? "sZl
    ©達內科技論壇 -- 達內科技論壇  .*Mt#
    答:首先在Applet的init() 方法中建立Frame instance, 然后將Menus, Menubar都加上去即可。 (setMenuBar() 是 Frame下的方法)或者,找到Applet上層的Frame后依法炮制。 L
    ©達內科技論壇 -- 達內科技論壇  Bg[M,%
    Container parent = getParent(); f^M^
    ©達內科技論壇 -- 達內科技論壇  t91UY
    while (! (parent instanceof Frame) ) .bT-
    ©達內科技論壇 -- 達內科技論壇  q,mh
    parent = parent.getParent(); ~Go]
    ©達內科技論壇 -- 達內科技論壇  DMkhP^
    Frame theFrame = (Frame) parent; JWPS
    ©達內科技論壇 -- 達內科技論壇  W|jE!C
    注意:第二個方法在Mac或某些browsers上并不可行。 mm
    ©達內科技論壇 -- 達內科技論壇  cz+
    如果您使用的是JDK 1.1,也可以考慮使用popup menu,這樣就不必理會Frame的問題了。 _EG
    ©達內科技論壇 -- 達內科技論壇  &yjq
    ©達內科技論壇 -- 達內科技論壇  <qM
    ©達內科技論壇 -- 達內科技論壇  =6
    10. 怎樣比較兩個類型為String的字符串? 07o?Q
    ©達內科技論壇 -- 達內科技論壇  &
    答:在兩個對象之間使用 "==",會將“兩個對象是否有同一reference”的結果傳回。也就是說, 這等同于“兩個對象是否擁有同一地址 (address)”,或者“兩個對象物件是否為同一對象”。如果您的意思是判斷兩個字符串的內容是否相同,那么應該使用以下的方法才對: |H9
    ©達內科技論壇 -- 達內科技論壇  k
    if (s1.equals(s2) ) 9
    ©達內科技論壇 -- 達內科技論壇  $
    or if (s1.equalsIgnoreCase(s2) ) O7w
    ©達內科技論壇 -- 達內科技論壇  Sa!iXY
    or if (s1.startsWith(s2) ) 1[^/
    ©達內科技論壇 -- 達內科技論壇  iF
    or if (s1.endsWith(s2) ) |kXnD
    ©達內科技論壇 -- 達內科技論壇  |W`Kvt
    or if (s1.regionMatches(s1_offset, s2, s2_offset, length) ) J]2
    ©達內科技論壇 -- 達內科技論壇  x
    or if (s1.compareTo(s2) <0) Lxa
    ©達內科技論壇 -- 達內科技論壇  r;8
    ©達內科技論壇 -- 達內科技論壇  _[9o}L
    ©達內科技論壇 -- 達內科技論壇  (K
    11. 怎樣將浮點數(float)相加 ? Float 好像沒有辦法? uQUhL
    ©達內科技論壇 -- 達內科技論壇  d
    答:我猜想您的程式大概寫成這樣: \
    ©達內科技論壇 -- 達內科技論壇  mve B2
    Float One; x
    ©達內科技論壇 -- 達內科技論壇  "0gY~3
    Float Two; U,
    ©達內科技論壇 -- 達內科技論壇  LEB*pN
    Float Hard = One + Two; [m
    ©達內科技論壇 -- 達內科技論壇  [N1}39
    請注意 float 和 Float 是不同的,前者是 Java 基本類型之一, 而后者卻是class。您應該將源代碼改為: ([%K
    ©達內科技論壇 -- 達內科技論壇  |zS
    float One; EP|Da
    ©達內科技論壇 -- 達內科技論壇  fvQ\ D
    float Two; ho
    ©達內科技論壇 -- 達內科技論壇  !I9
    float Hard = One + Two; aE
    ©達內科技論壇 -- 達內科技論壇  o
    ©達內科技論壇 -- 達內科技論壇  Iy_od9
    ©達內科技論壇 -- 達內科技論壇  Y.P
    Float One = new Float(1.0); !z;&
    ©達內科技論壇 -- 達內科技論壇  X~
    Float Two = new Float(2.0); +89C
    ©達內科技論壇 -- 達內科技論壇  z!1=OD
    Float Hard = new Float(One.floatvalue() + Two.floatvalue()); TH?,
    ©達內科技論壇 -- 達內科技論壇  *6*
    ©達內科技論壇 -- 達內科技論壇  +
    ©達內科技論壇 -- 達內科技論壇  W
    12. 如何將字串String轉換成整數int? &
    ©達內科技論壇 -- 達內科技論壇  cH(a_6
    答:有兩個方法: \
    ©達內科技論壇 -- 達內科技論壇  @T
    1)int i = Integer.parseInt([String]); 或 "1
    ©達內科技論壇 -- 達內科技論壇  &}M
    ©達內科技論壇 -- 達內科技論壇  K
    ©達內科技論壇 -- 達內科技論壇  v;0h
    i = Integer.parseInt([String],[int radix]); Hx$:}
    ©達內科技論壇 -- 達內科技論壇  N7;rS
    2)int i = Integer.valueOf(my_str).intvalue(); Ms
    ©達內科技論壇 -- 達內科技論壇  HiE$
    注: 字串轉成Double, Float, Long的方法大同小異。 m$\E
    ©達內科技論壇 -- 達內科技論壇  %q@|6
    ©達內科技論壇 -- 達內科技論壇  S+
    ©達內科技論壇 -- 達內科技論壇  z
    13. 如何將整數 int 轉換成字串 String? u[jlB
    ©達內科技論壇 -- 達內科技論壇  Br
    答:有三種方法: ?T^/
    ©達內科技論壇 -- 達內科技論壇  ox
    1)String s = String.valueOf(i); [m`
    ©達內科技論壇 -- 達內科技論壇  jK)D
    2)String s = Integer.toString(i); /e<YS$
    ©達內科技論壇 -- 達內科技論壇  BlgR
    3)String s = "" + i; V%y
    ©達內科技論壇 -- 達內科技論壇  27@&<
    注:Double, Float, Long 轉成字串的方法大同小異。 wSY?\
    ©達內科技論壇 -- 達內科技論壇  t_
    ©達內科技論壇 -- 達內科技論壇  9w
    ©達內科技論壇 -- 達內科技論壇  &AA
    14. 如何從一個文件檔案的尾端新增記錄? :IQJ#q
    ©達內科技論壇 -- 達內科技論壇  rL7='w
    答:有兩種方法: Xx6
    ©達內科技論壇 -- 達內科技論壇  r ?g#d
    1)RandomAclearcase/" target="_blank" >ccessFile fd = new RandomAccessFile(file,"rw"); U
    ©達內科技論壇 -- 達內科技論壇  4V.2{
    fd.seek(fd.length()); a`r0#
    ©達內科技論壇 -- 達內科技論壇  SiI
    然后使用 fd 的method寫入 `W;
    ©達內科技論壇 -- 達內科技論壇  4
    2)使用FileOutputStream(String name,boolean append) throws IOException這個 constructor 7!
    ©達內科技論壇 -- 達內科技論壇  l$$BUO
    ©達內科技論壇 -- 達內科技論壇  ~e/C
    ©達內科技論壇 -- 達內科技論壇  Am^7
    15. 如何設置Java 2(JDK1.2)的環境變量? 2J
    ©達內科技論壇 -- 達內科技論壇  7 5 'm
    答:Java 2安裝后,需要設置PATH和JAVA_HOME環境變量。與JDK1.1不同的是:設置好JAVA_HOME環境變量后,JVM將自動搜索系統類庫以及用戶的當前路徑。Java 2環境變量的設置如下例所示: <Y/Af
    ©達內科技論壇 -- 達內科技論壇  ?ZbL
    Solaris平臺: setenv JAVA_HOME Java2的安裝路徑 K
    setenv PATH $JAVA_HOME/bin:${PATH} b[27
    ©達內科技論壇 -- 達內科技論壇  7
    Windows平臺:set JAVA_HOME=Java2的安裝路徑 W
    set PATH=$JAVA_HOME\bin;%PATH% #-Y&&
    ©達內科技論壇 -- 達內科技論壇  vlLY
    ©達內科技論壇 -- 達內科技論壇  3n\-K
    ©達內科技論壇 -- 達內科技論壇  Swok
    16. 哪些Java集成開發工具支持Java 2? IY7b
    ©達內科技論壇 -- 達內科技論壇  w'6
    答:目前流行的Java集成開發環境,如Inprise的Jbuilder;Symantec的Visual Cafe,;Sybase的PowerJ都支持Java 2。 Ub=v
    ©達內科技論壇 -- 達內科技論壇  W3&JL
    ©達內科技論壇 -- 達內科技論壇  Up
    ©達內科技論壇 -- 達內科技論壇  /P
    17. 如果在Netscape或IE瀏覽器中運行Java applet時出現了錯誤,如何確定錯誤范圍? s)
    ©達內科技論壇 -- 達內科技論壇  ^.3
    答:當java applet在瀏覽器中運行時,使用的是瀏覽器本身的缺省JVM。而不同瀏覽器對JDK的支持程度也不盡相同。因此,在Netscape或IE瀏覽器中運行Java applet出現了錯誤,建議使用JDK提供的工具appletviewer或Sun公司的Hotjava瀏覽器來測試該applet,以確定錯誤的產生是與瀏覽器相關。如果applet在appletviewer或Hotjava中運行一切正常,則錯誤的產生是由于瀏覽器不完全兼容JDK而引起的。此時,解決方法可以是使用Hotjava瀏覽器或者安裝 Sun公司的Java Plugin。如果applet在Hotjava瀏覽器或appletviewer中運行即發生錯誤,則應當根據錯誤提示檢查applet程序。 tzA{@0
    ©達內科技論壇 -- 達內科技論壇  Zp?m
    ©達內科技論壇 -- 達內科技論壇  66;7
    ©達內科技論壇 -- 達內科技論壇  D7F`+r
    18. 在Java語言中,如何列出PC機文件系統中的所有驅動器名? 4G
    ©達內科技論壇 -- 達內科技論壇  4=0BJ
    答:在Java 2版本中,java.io包中的File類新增加了方法listRoots()可以實現這一功能。 |e@12N
    ©達內科技論壇 -- 達內科技論壇  Q
    ©達內科技論壇 -- 達內科技論壇  ^jB
    ©達內科技論壇 -- 達內科技論壇  [:w&
    19. 為什么Runtime.exec("ls")沒有任何輸出? O;
    ©達內科技論壇 -- 達內科技論壇  A
    答:調用Runtime.exec方法將產生一個本地的進程,并返回一個Process子類的實例,該實例可用于控制進程或取得進程的相關信息。由于調用Runtime.exec方法所創建的子進程沒有自己的終端或控制臺,因此該子進程的標準IO(如stdin,stdou,stderr)都通過Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()方法重定向給它的父進程了。用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出。所以正確執行Runtime.exec("ls")的例程如下: %g"fXd
    ©達內科技論壇 -- 達內科技論壇  2nkXR
    try ©達內科技論壇 -- 達內科技論壇  XnYGF
    ©達內科技論壇 -- 達內科技論壇  =
    { ©達內科技論壇 -- 達內科技論壇  `
    ©達內科技論壇 -- 達內科技論壇  !8_tZ
    process = Runtime.getRuntime().exec (command); Gsh\
    ©達內科技論壇 -- 達內科技論壇  c"cJK
    InputStreamReader ir=newInputStreamReader(process.getInputStream()); u4q'
    ©達內科技論壇 -- 達內科技論壇  W3Q<
    LineNumberReader input = new LineNumberReader (ir); 3H`i
    ©達內科技論壇 -- 達內科技論壇  =QYD
    String line; (
    ©達內科技論壇 -- 達內科技論壇  AP
    while ((line = input.readLine ()) != null) Ob[7k
    ©達內科技論壇 -- 達內科技論壇  {.:V
    System.out.println(line); #
    ©達內科技論壇 -- 達內科技論壇  pG
    } ©達內科技論壇 -- 達內科技論壇  zbz&Z,
    ©達內科技論壇 -- 達內科技論壇  2
    catch (java.io.IOException e){ mYKL
    ©達內科技論壇 -- 達內科技論壇  [kG
    System.err.println ("IOException " + e.getMessage()); Y
    ©達內科技論壇 -- 達內科技論壇  {n
    } ©達內科技論壇 -- 達內科技論壇  T@{|C
    ©達內科技論壇 -- 達內科技論壇  `
    ©達內科技論壇 -- 達內科技論壇  Y5-6Jm
    ©達內科技論壇 -- 達內科技論壇  ?eUK]
    20. 若通過ObjectOutputStream向一個文件中多次以追加方式寫入object,為什么用ObjectInputStream讀取這些object時會產生StreamCorruptedException? g'bP0|
    ©達內科技論壇 -- 達內科技論壇  ({;X
    答:使用缺省的serializetion的實現時,一個ObjectOutputStream的構造和一個ObjectInputStream的構造必須一一對應。ObjectOutputStream的構造函數會向輸出流中寫入一個標識頭,而ObjectInputStream會首先讀入這個標識頭。因此,多次以追加方式向一個文件中寫入object時,該文件將會包含多個標識頭。所以用ObjectInputStream來deserialize這個ObjectOutputStream時,將產生StreamCorruptedException。 !G"T%5
    ©達內科技論壇 -- 達內科技論壇  &.=
    一種解決方法是可以構造一個ObjectOutputStream的子類,并覆蓋writeStreamHeader()方法。被覆蓋后的writeStreamHeader()方法應判斷是否為首次向文件中寫入object?若是,則調用super.writeStreamHeader();若否,即以追加方式寫入object時,則應調用ObjectOutputStream.reset()方法。 G
    ©達內科技論壇 -- 達內科技論壇  M{Jpi
    ©達內科技論壇 -- 達內科技論壇  '
    ©達內科技論壇 -- 達內科技論壇  I@7f
    21. 對象的序列化(serialization)類是面向流的,應如何將對象寫入到隨機存取文件中? c\Vzi
    ©達內科技論壇 -- 達內科技論壇  4J
    答: 目前,沒有直接的方法可以將對象寫入到隨機存取文件中。但是可以使用ByteArray輸入/輸出流作為中介,來向隨機存取文件中寫入或從隨機存取文件中讀出字節,并且可以利用字節流來創建對象輸入/輸出流,以用于讀寫對象。需要注意的是在字節流中要包含一個完整的對象,否則讀寫對象時將發生錯誤。例如,java.io.ByteArrayOutputStream可用于獲取ObjectOutputStream的字節流,從中可得到byte數組并可將之寫入到隨機存取文件中。相反,我們可以從隨機存取文件中讀出字節數組,利用它可構造ByteArrayInputStream,進而構造出ObjectInputStream,以讀取對象。 s8dcYp
    ©達內科技論壇 -- 達內科技論壇  '!
    ©達內科技論壇 -- 達內科技論壇  -~Vz
    ©達內科技論壇 -- 達內科技論壇  7y,
    22. 在JDK1.1中Thread類定義了suspend()和resume()方法,但是在JDK1.2中已經過時,應使用什么方法來替代之? /A@.](
    ©達內科技論壇 -- 達內科技論壇  Er
    答: Thread.suspend本身易于產生死鎖。如果一個目標線程對某一關鍵系統資源進行了加鎖操作,然后該線程被suspend,那么除非該線程被resume,否則其它線程都將無法訪問該系統資源。如果另外一個線程將調用resume,使該線程繼續運行,而在此之前,它也需要訪問這一系統資源,則將產生死鎖。 +hW%t
    ©達內科技論壇 -- 達內科技論壇  Q`n
    因此,在Java 2中,比較流行的方式是定義線程的狀態變量,并使目標線程輪詢該狀態變量,當狀態為懸掛狀態時,可以使用wait()方法使之處于等待狀態。一旦需要該線程繼續運行,其它線程會調用notify()方法來通知它。 a
    ©達內科技論壇 -- 達內科技論壇  )M
    ©達內科技論壇 -- 達內科技論壇  d%

        }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>