java初級班FAQ

Sun的The Java FAQ:       go
ranchgirl提供的FAQ:    go
JDK下載:jdk 6.0  J2SE 5.0    J2SE 5.0 日本語    J2SE 1.4.1    J2SE 1.4.2 日本語
jdk 6.0文檔下載:    chm格式    html格式
jdk 6.0在線文檔:    jdk 6.0 online docs
jdk 6.0 turtorial:    jdk 6.0 turtorial    turtorial 下載
java ide下載:    netbeans    eclipse

論壇資源版精華:    論壇資源版精華
html


Q: JAVA的環境變量如何設置? A: 若是是Win95/98,在\autoexec.bat的最後面添加以下3行語句:
set JAVA_HOME=c:\j2sdk1.4.2
set PATH=%JAVA_HOME%\bin;%PATH%
set CLASSPATH=.;
看好了CLASSPATH中第一個「.」,這個表明當前目錄,不少人HelloWorld沒有運行起來大可能是這個緣由。

若是是Win2000或者XP,使用鼠標右擊「個人電腦」->屬性->高級->環境變量
系統變量->新建->變量名:JAVA_HOME 變量值:c:\j2sdk1.4.2
系統變量->編輯->變量名:Path 在變量值的最前面加上:%JAVA_HOME%\bin;
系統變量->新建->變量名:CLASSPATH 變量值:.;
CLASSPATH前面的那個"."和上面的意義是同樣的。

Q:javac 不是有效的內部命令 A:有兩個緣由:1 沒有安裝jdk,安裝了jre,這時候是能夠運行java命令,可是javac不能運行。2 安裝了jdk但路徑設置不對,也就是path這個環境變量設置不對,請參考如上設置方法,必定要在path的最前邊加上jdk的bin目錄的路徑。例如, 若是設置了JAVA_HOME,那麼在path前加【%JAVA_HOME%/bin;】

Q: JDK怎麼使用? A: 按照提示把JDK安裝成功,設置好環境變量,打開記事本,輸入:
java

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello ,world!");

}
}

保存爲HelloWorld.java ,注意保存時要選擇"全部類型", 打開命令提示符(Dos),進入你保存文件的目錄,
[i]javac HelloWorld.java[/i] (編譯) 若是沒錯誤,再
[i]java HelloWorld[/i] (運行)
java.sun.com官方關於第一個Java程序編寫的教程.
Your First Cup of Java (for Microsoft Windows)

Q: 運行javac HelloWorld.java 爲什麼「error:cannot read:HelloWorld.java 1 error」 A: 首先檢查文件名的的拼寫,大小寫是否正確,再看目錄是否正確。能夠在運行該命令的窗口中dir HelloWorld.java,看有無該文件。

Q: java HelloWorld 提示「NoClassDefFoundError: HelloWorld Eception in thread "main"」
A: 首先多是你CLASSPATH沒有設置正確,請按照上面的那個步驟進行設置。若是你路徑設置正確了,請確認你的類名是否正確,JAVA中大小寫是區分的,看看你的類名是否正確。

Q: 提示「Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java」 A: 編譯用「javac HelloWorld.java」,要擴展名。運行用「java HelloWorld」,不要擴展名。

Q: Applet 怎樣運行? A: 主要有兩種方法
1 JDK中的applet瀏覽器。
2 IE瀏覽器
這兩種方法都要將Applet嵌入到 HTML 文件中,如


保存在和源文件同目錄下,文件名爲xxx.html,若是用JDK中的applet瀏覽器看,就在命令提示符下運行
appletviewer xxx.html
用IE看直接雙擊 html 文件便可

Q: 爲何用IE運行Applet時,顯示的就是一片空白 A: IE自己並不支持Applet 的運行,要去 java.sun.com 下載一個插件(java plug_in)

Q: NullPointerException的緣由? A: NullPointerException發生的緣由是操做了一個爲null的變量,好比使用該爲null變量的【.】操做.如
web

File[] fileSet=new File[3];//只是初始化了fileSet數組,並無初始化各個元素,各個元素如今仍爲null.


fileSet[0].exists();//該操做就會形成NullPointerException異常.



Q: 查看Applet不能運行的錯誤緣由? A:對於用瀏覽器來查看的方式,若是是ie的話,能夠經過工具-》Sun java控制檯來看看是什麼錯誤。其餘瀏覽器也有相似的sun java控制檯。

Q:爲何編譯提示uses or overrides a deprecated API?(或java文件使用或覆蓋了已過期的API) A:From jdk文檔 java.langAnnotation Type Deprecated

programmers are discouraged from using, typically because it is dangerous, or because a better alternative exists. Compilers warn when a deprecated program element is used or overridden in non-deprecated code。

Q:爲何編譯提示class YourClass(注:你的類名)is pubic, should be declared in a file named YourClass.java? A:有兩種狀況,只有一個解釋。兩種狀況是:
1 把兩個public類放在同一個文件中,這樣就會出現該問題。
2 一個文件雖然只有一個公共類,但該文件的名字和public的類名不一致(注意大小寫,必須和你的public的類的名字大小寫徹底同樣)。

一個解釋也就很清楚了,public類所在的文件名不是「類名+.java」。改正的方法也很明白了,一個java文件中只有一個public類,而且該文件名的大小寫和public的類的類名徹底一致。
windows

Q:uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
A:和泛型有關。不過只是個Note,你能夠不用管它。
在1.5中,使用util中的類時,如List,但願你指定特定的類型,如List,這樣就只能add String類型的元素。若是沒有參數化集合類,就會出現這樣的提示,你可用 javac -Xlint:unchecked編譯來試試。

Q:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 A:數組越界,訪問數組下標爲6的元素時發生的越界異常。
數組

Q:編譯提示:不是抽象的,而且未覆蓋超類或接口中的抽象方法。
例如以下代碼:
瀏覽器

public class check extends Applet implements ItemListener{
public void init(){

.......

}



public void itemStateChange(ItemEvent e){
......

}
}

編譯提示:check不是抽象的,而且未覆蓋java.awt.event.itemListener中的抽象方法:itemStateChanged(java.awt.event.ItemEvent)

A: 編譯提示中說得很明確。check實現了ItemListener,但卻沒有覆蓋其中的抽象方 法:itemStateChanged(java.awt.event.Item.Event)。檢查上邊的代碼,其中的方法名錯寫成 itemStateChange,最後一個單詞是Changed。
在java中,若是類繼承了超類,或是實現了接口,而沒有實現其中的抽象方法,該類必須被聲明爲abstract類,不然就會出現如上的提示。出現這種錯 誤的緣由有三:1 沒有寫這個方法。2 寫這個方法了,可是方法的簽名和須要的不同,容易出現方法名寫錯。3 參數類型不一致,參數順序不一致。其中方法名寫錯最容易出現。
這種狀況下,仔細對照ItemListener的API文檔,看看本身寫的方法和其中的抽象方法的方法名,參數類型,參數順序是否相同。
在jdk 1.5及之後,在override地方可使用【@Override】放在override的方法前,這樣若是沒有override,編譯器會有提示。如上述代碼:
app

@Override public void itemStateChanged(ItemEvent e){
...............

}


仔細檢查應該能夠發現問題,那時必將會心一笑,原來如此簡單,:)。

Q:jar打包後運行提示找不到主類 A: 1 清單mainfest文件中必須指定了Main-Class類,而且該類可有main方法,在未打包前可運行
2 清單文件的問題 a Main-Class後的冒號和class類名之間必須且只能有一個空格。
b 清單文件的最後必須有一個新行或回車,而不是空行,方法是在文件的末尾按一下回車。

更詳細的內容請看精華中再議JAR文件

Q:運行程序提示OutOfMemoryError: Java heap space A: 1 能夠看看jdk文檔中該類的解釋 2 java有-X選項能夠用來指定虛擬機的可用內存,具體的選項能夠用運行 java -X獲得。其中有兩個和這個有關:
-Xms set initial Java heap size
-Xmx set maximum Java heap size

能夠用以下方式指定使用的內存大小 java -Xmx200m 這表示容許虛擬機最大使用200m的內存

Q:運行程序提示StackOverflowError A: 1 能夠看看jdk文檔中該類的解釋 2 調用的時候會把主叫方法壓入堆棧中,這樣被調用的方法返回的時候就取出主叫方法。在遞歸不少的程序中,好比QuickSort中,有不少次遞歸,堆棧大小 不夠,就會出現這種錯誤。在運行的時候能夠指定所用的堆棧大小,能夠用java -X獲得。有關的項以下
-Xss set java thread stack size
能夠用以下方式指定使用的堆棧大小 java -Xss400k
eclipse

相關文章
相關標籤/搜索