首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 新手必看:30 個核心基礎問題深度解析

     編輯:Java 相關知識

概念篇:搞清 Java 體系

Q1: Java、Java 2、JDK 的關係?版本號含義?

Java 是語言規範;JDK (J2SDK) 是 Sun 官方開發工具包,含編譯器、運行時、類庫;版本號如 1.3、1.4.2 表示 JDK 迭代版本(後統一為 Java 5/6/7...)。

Q2: JRE vs JDK?

JRE 只含運行環境(JVM+核心類庫),適合最終用戶;JDK 含 JRE + 開發工具,開發者必裝。切勿用 IE 自帶 VM 運行 Applet。

Q3: 初學工具選擇?

階段 1:JDK + 文本編輯器(記事本/EditPlus/Notepad++),強制理解 path、classpath、package、javac/java 命令。
階段 2:Eclipse(免費、強大、生態豐富),熟練後再用 IDEA。

Q4: 經典書籍?

首推《Thinking in Java》(Java 編程思想),第一章講透 OO 思想。O'Reilly、Wrox 出版社書籍質量高。必須適應英文文檔:API、官方教程、技術博客多為英文。

Q5: Java vs C++?

錯誤提問。正確問:哪個更適合我的項目? 需跨平台、分佈式、開發效率優先 → Java;極致性能、底層控制、單平台 → C++。

Q6: J2SE/EE/ME 區別?

J2SE = 標準版(桌面/服務端基礎);J2EE = 企業版規範(Servlet、EJB、JMS 等,針對應用服務器);J2ME = 微型版(嵌入式/手機,獨立 SDK)。

命令篇:搞定環境與運行

Q7-8: 編譯/運行流程與 path 配置

源碼 → javac Hello.java → 生成 Hello.class → java Hello 運行。
報 javac 不是內部命令 → 配置 JAVA_HOME 指向 JDK 目錄,Path 加入 %JAVA_HOME%\bin,重開 CMD。

Q9-10: classpath 與 NoClassDefFoundError

類加載路徑。未設置 classpath 時默認當前目錄;若設置了須包含 .(當前目錄)。包機制下,類文件必須按包路徑存放(如 package1/Class1.class),在根目錄編譯運行。

Q11: main 方法規範

單文件單 public 類,類名=文件名;public static void main(String[] args) 簽名固定。

Q12-15: package 與 import 機制

包用於唯一標識類(全名如 java.lang.String)和邏輯分組。源碼首行聲明 package pkg;,目錄結構對應包層級。import 可用 pkg.Class 或 pkg.*。無包聲明屬默認包。

Q16: 編譯成 .exe?

JDK 只產出跨平台字節碼 .class。第三方工具可打包 exe 但喪失跨平台性。純 Windows 场景建議直接用 C#/C++。

Q17: deprecated API 警告?

標記過時但保留兼容,未來可能移除。查 API 文檔替換為新方法。

I/O 篇:掌握輸入輸出本質

Q18: 程序啟動參數

main(String[] args) 接收參數。運行 java Class -arg1 -arg2,args 即為 ["-arg1", "-arg2"]。

Q19-20: 鍵盤/控制台輸入輸出標準範式

// 輸入
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
int n = Integer.parseInt(s);

// 輸出
PrintWriter out = new PrintWriter(System.out);
out.println("Hello");
out.flush();

Q21: 為什麼不用 System.in/out 直接讀寫?

System.in/out 是字節流,處理中文等雙字節字符會亂碼。需包裝為字符流(Reader/Writer)。

Q22-24: 文件操作與流末尾判斷

文件讀寫同理,換成 FileReader/FileWriter。隨機訪問用 RandomAccessFile。read() 返回 -1 表示流結束。

關鍵字篇:語言特性差異

Q25-26: 無宏、無 const → 用 static final

Java 無宏(類型不安全),常量用 static final。const 是保留字。

Q27: 無 goto → 用標籤 break/continue

結構化編程足矣。多層循環跳出用標籤:outer: while(...) { inner: for(...) { break outer; } }。goto 為保留字。

Q28: 無運算符重載

僅 String 的 + 為內置重載。自定義類通過方法實現(如 add())。

Q29: 無 delete → GC 自動回收

對象創建後無需手動銷毀,JVM 垃圾收集器自動管理內存,杜絕指針錯誤。

Q30: main 必須 public static?

public:JVM 外部調用入口;static:無需實例化類即可調用,屬於類而非對象。static 成員被所有實例共享。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved