2008年4月28日 星期一

為Java菜鳥幫解答問題二十例


問題1、在我的系統中有幾個字處理程式,我應該選擇哪一個來編輯java根源程式呢?

解答:只要能將檔保存為不帶任何特殊格式的文字檔案,選擇哪個都可以。

問題2、如果每條語句之後都要加上分號,那為什麼在象//hello這樣的語句後面不用加上分號呢?

解答:注釋是完全被編譯器忽略的。如果在你的程式中某一行加上了"//"號,這就告訴編譯器忽略"//"右邊的一行語句。

問題3、什麼是字元

解答:字元就是單個字母、數位、標點符號或其他符號。例如,T,5以及%。字元以原文的形式存儲在變數中。

問題4、當我在使用javac編譯程序時,出現"Invalid argument"的錯誤資訊,我該如何改正它?

解答:你可能在鍵入javac命令時遺漏了.java副檔名。此外,當前目錄必須是要編譯的java原始檔案所在的目錄。

問題5、在編譯器提示出錯的語句中,我找不著錯誤,該怎麼辦?

解答:錯誤資訊顯示的行號通常並不是真正出錯的地方。檢查錯誤行號前面的語句,或許你可以找到錯誤。錯誤通常是在同一個程式塊中。

問題6、我在Web頁面上可以執行一個有用的程式,我能脫離流覽器獨立執行它嗎?

解答:在大多數情況下是不可以的。標準的Java的程式均執行在Web頁面上或是命令行中。可以寫一個支援這兩項的java程式,大部分你能找到的程式都不能兼顧這兩個功能。

問題7、java程式有著跨平臺的特性,那為什麼有些java編譯器(象Sunsoft Java工作平臺)只能執行在特定的系統上?

解答:java程式有可能在特殊的系統中受到限制(象相容的PC機),因為java程式為了達到某種目的可能包含一些非java的程式。一個java程式可能調用另一個由C++寫成的程式以達到某些特性。

問題8、我的電腦在網頁中執行java程式,是否會帶來病毒?

解 答:由於網頁程式語言的嚴格限制,對其控制下的讀寫和對檔的修改也是受控制的,不存在任何從頁面上讀java程式而導致病毒的途徑,除非在你的系統中由 你賦予這些程式完全的許可。允許他人在你的硬碟上進行操作。那些下載後在命令行中執行的java程式則有著與其他程式相同的風險,如果你使用從網上下載的 程式,你必須用好的防毒軟體進行檢查,並做到經常有規律地進行。

問題9、單個java程式可以既是應用程式又是java Applet嗎?

解 答:是可以的。如果程式不是很簡單的話,這樣做通常是很笨拙的。只要Applet加上main()模組就可以當作應用程式執行,但在應用程式中,卻無法加 上init()塊和paint()塊而使它以java Applet的形式執行。大多數程式或者是應用程式或者是Applet,而不會兩者皆是。

問題10、所有傳遞給應用程式的參數都必須是字串嗎?

解答:當程式執行時,java將所有的參數當作字串存儲。

問題11、java程式中的行是否同語句一回事?

解答:不。儘管一般創建程式都是一行一個語句,但這只是為了使程式更易於理解,這不是必須的。java編譯器在它對程式進行編譯時並不考慮行、空格和其他格式的形式,編譯器只要求在語句的結束處有分號。你可以在一行上寫多個語句,儘管我們通常不提倡這樣做。
問題12、為什麼變數名的第一個字母要小寫,比如gameOver?

解答:這是為了很容易將變數和Java中其他元素區分開來。另外,在命名變數時遵循一致的風格的好處是當你在程式中的幾個不同的地方使用同一個變數時可以避免發生的錯誤。

問題13、是否可以讓具有相同字母的兩個變數名大小寫不同?比如ABC和abc

解 答:不同大小寫的變數名被看成是不同的變數,Java對大小寫是敏感的。因此象上面那樣讓相同的名字使用兩次是可以的。但是,當你或某個其他人要指出程式 是如何工作的時候,這樣做很容易引起許多混亂。而且這樣也增加了程式中使用錯誤變數名的可能性,而這個錯誤編譯器是不能發現的。這樣的錯誤只會影響程式的 執行結果,我們稱這樣的錯誤為邏輯錯誤。這種錯誤必須由一個注意力集中的程式師在測試時發現。

問題14、我編的程式在其他機子上流覽時,總是說***.class not found,我想問一下,對於在系統介面中的class,我怎樣知道我的程式使用了哪些類.?

解答:編譯的時候用選項 javac -verbose ******** 可以看你的程式都用到了類庫中的哪些類。

問題15、String s1 = "123",如何轉換成整數 int a1 = 123,相反的轉換又如何實現?

解答:a1=Integer.parseInt(s1),s1=Integer.toString(a1),還有很多方法,參見幫助檔。

問題16、System.out.print()為什麼不輸出?

解答:輸出流收到一個換行符才將緩衝區中的內容輸出,在程式最後加一行 System.out.flush() 應該就可以。

問題17、 把一個陣列作為入口參數傳給一函數,函數中如何知道該陣列的大小?

解答:陣列物件都有 .length屬性,如:int count = yourArray.length ;

問題18、程式執行時總是出現NullPointerException,可編譯也能通過,不知為什麼?

解答:使用變數前別忘了new之,多數情況都是因為這個問題。

問題19、為什麼使用編譯器javac編譯時,出現'javac' 不是內部或外部命令,也不是可執行的程式或批次檔案(javac: Command not found)的錯誤?

解 答:產生的原因是沒有設定好環境變數path。Win98下在autoexce.bat中加入path=%path%;c:\jdk1.3\bin, Win2000下則控制台->系統->進階->環境變數->系統變數...看到了變數Path,雙擊Path,在後面加上c: \jdk1.3\bin。當然我們假設JDK安裝在c:\jdk1.3目錄下。

問題20、使用java執行class文件時,出現如下的錯誤:
java Helloworld.class
Exception in thread "main"
java.lang.NoClassDefFoundError:
HelloWorld/class

解答:執行程式的時候不需要也不應該加上.class副檔名,java解釋器會把前面的類名作為一個包名來解釋的。

沒有留言: